Меню Рубрики

Время выполнения скрипта linux

Information Security Squad

stay tune stay secure

Как найти время выполнения команды или процесса в Linux

Вероятно, вы знаете время начала команды / процесса и как долго процесс выполняется в Unix-подобных системах.

Но когда вы его закончили и / или какое общее время, затраченное на выполнение команды / процесса?

В Unix-подобных системах есть утилита с именем «GNU time», специально предназначенная для этой цели.

Используя утилиту Time, мы можем легко измерить общее время выполнения команды или программы в операционных системах Linux.

Хорошо, что команда «Time» поставляется в большинстве дистрибутивов Linux, поэтому вам не нужно беспокоиться об установке.

Найти время выполнения команды или процесса в Linux

Чтобы измерить время выполнения команды / программы, просто запустите.

Вышеуказанные команды отображают общее время выполнения команды «ls».

Замените «ls» любой командой / процессом по вашему выбору, чтобы найти общее время выполнения.

  • real — возвращает общее время, затраченное командой / программой,
  • user — указывает время, затраченное программой в пользовательском режиме,
  • sys — указывает время, затраченное программой в режиме ядра.

time и /usr/bin/time

Как вы могли заметить, в приведенных выше примерах мы использовали две команды «time» и «/usr/bin/time».

Итак, вы можете задаться вопросом, в чем разница между ними.

Сначала давайте посмотрим, что на самом деле «timeя» использует команду «type».

Для тех, кто не знает, команда Type используется для получения информации о команде Linux.

Как видите time — две штуки

  • Ключевое слово, встроенное в оболочку BASH
  • Исполняемый файл — /usr/bin/time

Поскольку ключевые слова оболочки имеют приоритет над исполняемыми файлами, когда вы просто запускаете runmimommand без полного пути, вы запускаете встроенную команду оболочки.

Но, когда вы запускаете /usr/bin/time, вы запускаете реальную программу времени GNU time.

Итак, чтобы получить доступ к реальной команде, вам может потребоваться указать ее явный путь.

Встроенное ключевое слово оболочки «time» доступно в большинстве оболочек, таких как BASH, ZSH, CSH, KSH, TCSH и т. д.

Ключевое слово оболочки «time» имеет меньше опций, чем исполняемые файлы.

Единственный вариант, который вы можете использовать в ключе «time», — это -p.

Теперь вы знаете, как найти общее время выполнения данной команды / процесса, используя команду «time».

Хотите узнать немного больше об утилите «GNU time»? Читайте дальше!

Краткое введение в программу «GNU time»

Программа GNU time запускает команду / программу с заданными аргументами и суммирует использование системных ресурсов в качестве стандартного вывода после завершения команды.

В отличие от ключевого слова time, программа GNU time не просто отображает время, используемое командой / процессом, но и другие ресурсы, такие как память, вызовы ввода-вывода и IPC.

Типичным синтаксисом команды Time является:

options в приведенном выше синтаксисе ссылаются на набор флагов, которые могут использоваться командой time для выполнения определенной функциональности.

Список доступных опций приведен ниже^

  • -f, -format — Используйте этот параметр, чтобы указать формат вывода по вашему желанию.
  • -p, -portability — Использовать переносимый формат вывода.
  • -o file, -output = FILE — Записывает вывод в FILE вместо отображения в качестве стандартного вывода.
  • -a, -append — Добавить файл в файл вместо перезаписывания.
  • -v, -verbose — Этот параметр отображает подробное описание вывода утилиты «время».
  • -Quiet — этот параметр запрещает утилиту времени «время» сообщать о статусе программы.
  • При использовании программы «GNU time» без каких-либо параметров вы увидите вывод, как показано ниже.

Если вы запустите ту же команду с встроенным ключевым словом «time», результат будет немного другим:

В некоторых случаях вы можете записать вывод использования системного ресурса в файл, а не отображать его в терминале. Для этого используйте флаг -o, как показано ниже.

Как вы можете видеть на выходе, утилита Time не отображает результат. Потому что мы записываем вывод в файл с именем file.txt. Давайте посмотрим на этот файл:

Когда вы используете флаг -o, если нет файла с именем «file.txt», он будет создавать и записывать вывод в него.

Если файл.txt уже присутствует, он перезапишет его содержимое.

Вы также можете добавить вывод в файл, а не переписывать его, используя флаг -a.

Флаг -f позволяет пользователям управлять форматом вывода по своему усмотрению.

Скажем, например, следующая команда отображает вывод команды «ls» и показывает только пользователя, систему и общее время.

Помните, что встроенная команда «time» не поддерживает все функции программы GNU time.

Для получения дополнительной информации о утилите времени GNU см. Справочные страницы.

Источник

Вывести время выполнения команд в Linux

Измерить время выполнения команды в Linux не просто, а очень просто. Но это только на первый взгляд. Давайте посмотрим на команду time более внимательно.

Команда time

Вызов консольной команды time

Если стоит задача измерить только время выполнения команды в Linux, то все что вам необходимо — команда time.

Синтаксис данной команды очень простой:

Пример вызова — замеряем время выполнения команды sleep 1:

С помощью ключа -p можно заставить команду выводить время выполнения в сжатом Posix формате:

Другой time

Теперь разберемся, что же за команду мы выполняем:

Вот оно что! Оказывается, time, который мы вызывали — это внутренняя команда Shell.

А теперь попробуем сделать так:

А это уже внешняя команда, расположенная по пути: /usr/bin.

Попробуем вызвать ее:

Параметры вызова внешней команды time

Перенаправление вывода статистики в файл, вместо вывода в стандартный поток ошибок. По умолчанию, существующий файл будет полностью перезаписан.

Применяется для сбора статистики из программ с пользовательским интерфейсом или выводящих информацию в поток ошибок.

-a, —append Дополняет существующий файл новой информацией. Применяется совместно с опциями ‘-o’ или ‘—output’ . -f FORMAT, —format FORMAT

Используется шаблон FORMAT для вывода статистики.

Формат вывода по умолчанию:

%Uuser %Ssystem %Eelapsed %PCPU (%Xtext+%Ddata %Mmax)k
%Iinputs+%Ooutputs (%Fmajor+%Rminor)pagefaults %Wswaps

Описание используемых шаблонов приведено в конце статьи.

—help Вывод краткой помощи и завершение команды. -p, —portability

Выводит информацию по стандарту POSIX 1003.2:
real %e
user %U
sys %S

-v, —verbose Выводит расширенную статистику использования ресурсов с описанием каждого параметра. —quiet «Тихий режим» — подавление вывода команды, в том числе и ошибок. -V, —version Вывести версию команды time и завершить выполнение.

Внешний time по умолчанию

Чтобы явно указать, какую из команд мы хотим вызвать, можно воспользоваться следующим способом:

Для того, чтобы по умолчанию запускалась внешняя команда time достаточно выполнить:

Это установит внешнюю команду time по умолчанию для текущей сессии.

Чтобы применить эти изменения для всех последующих сессий, добавьте команду alias в файл

/.bashrc (изменения для текущего пользователя) или /etc/bash.bashrc (изменения затронут всех пользователей системы).

Измерение времени выполнения команд в скриптах

Довольно часто необходимо замерить время выполнения какого-либо участка кода в скрипте bash.

Для этого в исследуемый скрипт добавим немного кода:

Источник

Bash время выполнение скрипта в милисекундах

Есть обычный тестовый скрипт, который копирует содержимое папки и показывает в конце время выполнения операции. Но это время указывается в секундах, а реальный скрипт может выполняться гораздо быстрее и обычно мне возвращается 0 секунд, хотя он то может быть выполнен за 0,5 сек или 0,005 сек.

Вопрос: Есть ли возможность подсчёта времени в милисекундах?

3 ответа 3

Используя ваш код немного модифицируем и получим следующее:

Аргумент %N вернет наносекунды, 1 миллисекунда равна 1000000 наносекундам.

UPD: Не проверял, но должно работать.

Попробуйте утилиту time :

Для вывода минут секунд и тысячных секунды можно использовать следующую конструкцию скрипта:

Вывод:
время выполнения 1m2.004s

Таймер возвращает общее время выполнения перечисленных команд между родительскими < >, возможно так же вызвать несколько time <. >в одном скрипте и переобъявить переменную TIMEFORMAT для каждого.

Более подробно о формате вывода времени команды time можно почитать тут http://www.gnu.org/software/bash/manual/html_node/Bash-Variables.html

UPD: если вы изменили переменную TIMEFORMAT в терминале и хотите вернуть ее в текущей сессии по умолчанию, то выполните команду unset TIMEFORMAT .

Источник

Полезные команды Linux

Терминал Linux очень гибкий и полезный инструмент. С помощью него можно сделать что угодно и во многих случаях даже намного эффективнее чем в графическом интерфейсе. Команды можно объединять между собой, перенаправлять вывод одной команды, на вход другой, комбинировать их различным образом. Это делает их применение еще более эффективным. В сегодняшней статье я хочу поделиться несколькими полезными командами linux, которые я открыл для себя во время использования Linux и которыми до сих пор пользуюсь для автоматизации рутинных действий.

В качестве командной оболочки используется самая популярная — bash. Также для некоторых задач нам понадобится демон планирования выполнения задач cron.

Некоторые из этих команд упрощают выполнение той или иной задачи, некоторые полностью выполняют нужные действия за пользователя. Возможно, не все они будут вам полезны, так как, некоторые команды нужны только веб-мастерам, другие системным администраторам, а еще одни обычным домашним пользователям. Но давайте перейдем к списку полезные команды для линукс.

Создание папок в терминале

Для создания папки в терминале используется команда mkdir. Вот так она выглядит:

Но не все знают о ее дополнительных возможностях. Чтобы создать несколько вложенных папок используйте команду p:

Создать несколько папок за один раз:

Создать папку и перейти в нее:

mkdir /home/foo/doc/bar && cd $_

Кстати, синтаксис фигурных скобок поддерживают и другие команды для linux терминала.

Ожидать завершения команды и выключить компьютер

Это скорее не команда, а небольшая стандартная функция оболочки Bash, о которой не все знают. Иногда нам нужно оставить на выполнение какую-нибудь долго работающую утилиту, например, обновление системы, а самим куда-то отойти. И при этом мы хотим чтобы после завершения работы утилиты компьютер автоматически выключился. Можно просто объединить команды с помощью стандартного синтаксиса Bash. Для объединения используются символы && и ||. Первый — выполнить другую команду если первая завершилась успешно, второй если первая завершилась ошибкой.

Например, обновить систему и если все хорошо выключить PC:

apt-get update && apt-get upgrade && shutdown -h now

Или выключить компьютер если обновление не удалось:

apt-get update && apt-get upgrade || shutdown -h now

Или выключить независимо от того произошла ошибка или нет:

apt-get update && apt-get upgrade ; shutdown -h now

Здесь приведена команда обновления Ubuntu, но в других дистрибутивах нужно заменить эту команду на свою.

Повторить последнюю команду

Если мы уже начали говорить о возможностях Bash пойдем дальше. Символ !! означает выполнить последнюю команду. Часто ли у вас случалось такое, что вы набираете команду нажимаете Enter и понимаете, что для ее работы нужно было использовать sudo? Тогда приходиться набирать ту же команду только уже правильно. Но можно пойти другим путем, выполнить:

Кроме символа !! В Bash есть еще несколько указателей на команды:

  • !^ — первый аргумент предыдущей команды;
  • !$ — последний аргумент предыдущей команды;
  • !* — все аргументы предыдущей команды;
  • !-2 — вторая с конца команда;
  • *— содержимое текущего каталога.

А вот так можно сохранить последнюю выполненную команду в скрипт:

Вызвать последнюю команду которая начиналась с символов

И еще о возможностях Bash. Например, вы помните что подключались в последний раз к определенному узлу по ssh, и теперь вам нужно подключиться к нему снова. Чтобы не вводить полностью команду можно набрать знак «!» и символы с которых начиналась команда:

Будет выполнена последняя команда, которая начиналась на ssh.

Посмотреть ip адрес

Часто возникает необходимость быстро узнать ip адрес своей машины. Для этого есть легко запоминающаяся команда, использующая curl и сайт ifconfig.me:

Форматирование вывода

Многие команды Linux выводят данные, разделяя столбцы пробелами. Одна из них mount. И естественно, в этом выводе трудно что-либо разобрать. Для разделения столбцов табуляциями используйте утилиту column:

Динамический просмотр лога

Допустим, есть у нас лог файл в который пишется определенная информация и мы хотим видеть все изменения сразу, на лету. Тогда используйте команду tail с опцией -f:

$ tail -f /адрес/лог/файла

Будет выведено 8 последних строк из лога файла, а затем они будут постоянно обновляться.

Очистить терминал

Вывод команд, если во время их разработки были допущены некоторые ошибки может сломать форматирование строк терминала. Или просто может понадобится стереть всю лишнюю информацию. Для этого есть аж две полезные команды linux, первая:

Первая только переводит курсор вверх страницы, вторая добавляет несколько пустых строк.

Подключение RAM диска

Если вам нужно немного дискового пространства с высокой скоростью работы, в Linux можно легко подключить немного оперативной памяти в корневую файловую систему:

mount -t tmpfs tmpfs /mnt -o size=1024m

В папку /mnt будет подключен RAM диск размером 1024 мегабайт.

Узнать архитектуру системы

Этой простой командой можно быстро узнать разрядность системы:

Открыть файл на определенной строке

Это не команда, а просто малоизвестная функция консольных редакторов. Очень полезная для программистов. Вот, например, сообщает программа, что у вас ошибка в 55 строке, вместо того чтобы самому искать ту сроку просто набираете:

nano +55 /sourcefile

И оказываетесь сразу на нужной строке.

Время выполнения команды

Хотите узнать сколько времени выполняется та или иная команда? Просто добавьте перед ней вызов утилиты time. Например:

drwxr-xr-x 8 user user 4096 дек 6 14:13 Фильмы
drwxr-xr-x 13 user user 4096 июл 20 2014 Фото

real 0m0.059s
user 0m0.003s
sys 0m0.003s

Эту команду также можно использовать в качестве секундомера. Просто выполните:

А затем нажмите Ctrl+D когда нужно будет узнать сколько времени прошло.

Автоматическое удаление старых файлов

Все мы часто качаем файлы из интернета, это торренты, фильмы, музыка и т д. И все это со временем накапливается в папке загрузки если ненужное вовремя не удалять, а нужное не перемещать в другие папки. Тогда папка загрузок начинает напоминать огромную свалку где вообще нереально что-то найти. У себя я всегда время от времени сортировал и удалял файлы, но когда видел такое у знакомых брался за голову. Есть способ упростить очистку папки загрузок.

Утилита find позволяет находить все файлы, созданные позже определенной даты и выполнять с ними нужное действие. Все нужные файлы будем вовремя рассортировывать и перемещать по папкам назначения, а все что останутся в загрузках будут через два дня автоматически удаляться. Знание что файлы будут удалены заставит их вовремя переместить куда нужно.

Вот так выглядит сама команда:

find /home/user/Downloads/ -type f -mtime +180 -exec ‘rm -f <>‘

Если не хотите полностью удалять файлы можно перемещать их в корзину:

find /home/user/Downloads/ -type f -mtime +180 -exec ‘mv <>

Подробнее о работе find можно почитать тут. Для полной автоматизации добавим выполнение этой команды каждый день в расписание cron:

0 0 * * * find /home/user/Downloads/ -type f -mtime +180 -exec ‘rm -f <>‘

Теперь давние файлы будут автоматически удаляться каждый день.

Убить все процессы из консоли

Если у вас небольшое количество оперативной памяти на компьютере и вы любите открывать очень много вкладок в Chromium, то программа а вместе с ней и окружение рабочего стола могут прочно зависать. Браузер создает для каждой вкладки отдельный процесс, поэтому пока планировщик памяти ядра поймет кто виноват в сбое и что нужно делать уйдет много времени, а пытаться убить каждую вкладку по отдельности очень долгое занятие. Есть команда, с помощью которой можно из терминала одним махом закрыть все вкладки:

ps aux | grep chromium | awk ‘‘ | xargs kill -TERM

Здесь мы получаем список всех процессов в ps, выбираем из них chromium, потом отбираем второй столбец, то есть PID, и с помощью xargs вызываем kill для каждой вкладки. Точно таким же способом можно уничтожить любое приложение создающее много процессов.

Завершение

Вот и подошли к концу наши полезные команды для линукс. Если вы знаете другие полезные команды linux, поделитесь ими в комментариях!

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Эмуляция mac os на windows
  • Эмуляторы windows для mac os x
  • Эмулятор сеги для mac os
  • Эмулятор программ mac os
  • Эмулятор для sega для mac os