Если вы хотите быть хорошим администратором Linux, вы должны знать команду time.
Она используется, чтобы определить, сколько времени занимает выполнение данной команды.
Это полезно для тестирования производительности ваших скриптов и команд (т. е. Помогает найти время выполнения скриптов оболочки или время, необходимое для завершения команды).
Как использовать команду time в Linux
Чтобы использовать команду, просто выполните time с командой / программой, которую вы хотите запустить в качестве ввода.
Пожалуйста, проверьте ниже пример:
$ time ping itsecforu.ru
output PING linoxide.com (104.27.115.15) 56(84) bytes of data. 64 bytes from 104.27.115.15 (104.27.115.15): icmp_seq=1 ttl=58 time=1.77 ms 64 bytes from 104.27.115.15 (104.27.115.15): icmp_seq=2 ttl=58 time=2.12 ms 64 bytes from 104.27.115.15 (104.27.115.15): icmp_seq=3 ttl=58 time=1.65 ms --- linoxide.com ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 10016ms rtt min/avg/max/mdev = 1.118/1.476/2.124/0.362 ms real 0m10.536s user 0m0.002s sys 0m0.007s
значение real обозначает время, которое команда ‘ping’ занимала от выполнения до завершения, user и sys – это время, необходимое для проверки связи с пользовательским пространством и пространством ядра.
Как сделать так, чтобы команда time записывала свой вывод в файл
Чтобы записать вывод команды time в файл вместо вывода на экране , используйте параметр командной строки -o, который ожидает имя файла / путь в качестве ввода.
$ /usr/bin/time -o /home/smart/time-output.txt ping itisgood.ru
Теперь мы отобразим вывод ping на stdout, а вывод команды времени будет записан в текстовый файл.
Примечание: мы использовали /usr/bin/time вместо time, потому что встроенная в оболочку команда time не предлагает опцию -o.
Как добавить вывод в существующий файл
Чтобы добавить вывод команды time в существующий файл, а не перезаписать его, используйте параметр командной строки -a.
$ /usr/bin/time -a /home/smart/time-output.txt ping linoxide.com
Как получить подробный вывод команды linux time
Мы можем использовать параметр командной строки -v для получения подробного вывода.
$ time -v ping itisgood.ru
output Command being timed: "ping linoxide.com" User time (seconds): 0.00 System time (seconds): 0.00 Percent of CPU this job got: 0% Elapsed (wall clock) time (h:mm:ss or m:ss): 0:11.77 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 3064 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 0 Minor (reclaiming a frame) page faults: 158 Voluntary context switches: 14 Involuntary context switches: 0 Swaps: 0 File system inputs: 0 File system outputs: 0 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0
Как настроить вывод команды time
Существует большое количество параметров форматирования, как показано в следующем списке:
- C – Имя и аргументы командной строки, используемые в команде
- D – средний размер неразделенной области данных процесса в килобайтах
- E – истекшее время в формате часов
- F – Количество ошибок страницы
- I – Количество входов файловой системы процессом
- K – среднее суммарное использование памяти процессом в килобайтах
- М – Максимальная резидентная установка размера процесса в течение жизни в килобайтах
- O – Количество выходов файловой системы процессом
- P – процент CPU, полученный заданием
- R – количество мелких или восстанавливаемых ошибок страницы
- S – общее количество секунд процессора, используемых системой в режиме ядра
- U – общее количество секунд процессора, используемых в пользовательском режиме
- W – количество раз, когда процесс был выгружен из основной памяти
- X – среднее количество общего текста в процессе
- Z – размер страницы системы в килобайтах
- c – Количество раз, когда процесс был переключен контекст
- e – истекшее реальное время, использованное процессом в секундах
- k – количество сигналов, доставленных в процесс
- p – средний размер неразделенного стека процесса в килобайтах
- r – количество сообщений сокета, полученных процессом
- s – количество сообщений сокета, отправленных процессом
- t – средний размер резидентного набора процесса в килобайтах
- w – количество времени, когда процесс добровольно переключался
- x – выход из команды
Мы можем использовать переключатели форматирования следующим образом:
$ time -f "Elapsed Time = %E, Inputs %I, Outputs %O"
Вывод для приведенной выше команды будет выглядеть примерно так:
Elapsed Time = 0:01:00, Inputs 2, Outputs 1
Если мы хотим добавить новую строку как часть строки формата, используйте символ новой строки следующим образом:
$ time -f "Elapsed Time = %E \n Inputs %I \n Outputs %O"
Версии команд time в Linux
Существует три варианта команды: Bash, Zsh и Gnu time.
Мы можем использовать команду type, чтобы определить, является ли time двоичным или встроенным ключевым словом.
$ type time
output # Bash time is a shell keyword # Zsh time is a reserved word # GNU time (sh) time is /usr/bin/time
На примере Ubuntu 16.04:
type time time является ключевым словом оболочки