Как посмотреть время работы процесса linux

Вы когда-нибудь хотели узнать, как долго процесс запускается в вашем Linux-боксе?

Ну, ты на правильном пути.

Это краткое руководство поможет вам узнать время работы активного процесса.

Вам не нужны никакие приложения для мониторинга.

В Unix-подобных операционных системах существует команда ps, которая используется для отображения информации об активных процессах.

Используя команду ps, мы можем легко узнать, как долго работает процесс.

Узнать, как долго длится процесс в Linux

Команда ps имеет разные спецификаторы формата (ключевые слова), которые могут использоваться для управления выходным форматом.

Мы будем использовать следующие два ключевых слова, чтобы найти время работы активного процесса.

  • etime – прошедшее время с момента запуска процесса в виде [[DD-] hh:] mm: ss.
  • etimes – прошедшее время с момента запуска процесса в секундах.

Во-первых, вам нужно узнать PID процесса. Следующая команда отображает PID процесса dhcpcd.

$ pidof dhcpcd
8299

Как видно из вышеприведенного вывода, 8299 является PID процесса dhcpcd.

Теперь мы можем узнать, как долго этот процесс выполнялся с помощью команды:

$ ps -p 8299 -o etime
 ELAPSED
 04:05:37

Вы также можете просмотреть прошедшее время в секундах, используя ключевое слово etimes.

$ ps -p 8299 -o etimes
ELAPSED
 14749

Find out how long a process has been running in Linux

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

ps -eo pid,comm,lstart,etime,time,args

или

ps -eo pid,comm,lstart,etimes,time,args

Первая команда отображает время безотказной работы всех процессов Linux в формате [[DD-] hh:] mm: ss, а на последнем отображает время безотказной работы в секундах.

Вот пример вывода второй команды.

uptime of all processes in Linux

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

Тут есть вот что:

  • PID – идентификатор процесса
  • COMMAND (второй столбец) – имя команды без параметров и / или аргументов.
  • STARTED – абсолютное время начала процесса.
  • ELAPSED – Истекшее время с момента запуска процесса в виде [[dd-] hh:] mm: ss.
  • TIME – суммарное время процессора, “[dd-] hh: mm: ss” format.
  • COMMAND (последний столбец) – имя команды со всеми ее опциями и аргументами.

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

man ps

И это все на данный момент. Теперь вы знаете, как узнать, как долго работает процесс в вашей Linux-системе. Надеюсь это поможет. Я скоро буду здесь с другим полезным руководством.

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

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

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

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

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

Содержание

  1. Найти время выполнения команды или процесса в Linux
  2. time и /usr/bin/time
  3. Краткое введение в программу «GNU time»

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

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

$ /usr/bin/time -p ls

или

$ time ls

Пример вывода

dir1 dir2 file1 file2 mcelog

real 0m0.007s
user 0m0.001s
sys 0m0.004s
$ time ls -a
. .bash_logout dir1 file2 mcelog .sudo_as_admin_successful
.. .bashrc dir2 .gnupg .profile .wget-hsts
.bash_history .cache file1 .local .stack

real 0m0.008s
user 0m0.001s
sys 0m0.005s

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

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

Здесь:

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

time и /usr/bin/time

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

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

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

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

$ type -a time
time is a shell keyword
time is /usr/bin/time

Как видите 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 является:

/usr/bin/time [options] command [arguments...]

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

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

  • -f, -format – Используйте этот параметр, чтобы указать формат вывода по вашему желанию.
  • -p, -portability – Использовать переносимый формат вывода.
  • -o file, -output = FILE – Записывает вывод в FILE вместо отображения в качестве стандартного вывода.
  • -a, -append – Добавить файл в файл вместо перезаписывания.
  • -v, -verbose – Этот параметр отображает подробное описание вывода утилиты «время».
  • -Quiet – этот параметр запрещает утилиту времени «время» сообщать о статусе программы.
  • При использовании программы «GNU time» без каких-либо параметров вы увидите вывод, как показано ниже.
$ /usr/bin/time wc /etc/hosts
9 28 273 /etc/hosts
0.00user 0.00system 0:00.00elapsed 66%CPU (0avgtext+0avgdata 2024maxresident)k
0inputs+0outputs (0major+73minor)pagefaults 0swaps

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

$ time wc /etc/hosts
9 28 273 /etc/hosts

real 0m0.006s
user 0m0.001s
sys 0m0.004s

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

$ /usr/bin/time -o file.txt ls
dir1 dir2 file1 file2 file.txt mcelog

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

$ cat file.txt 
0.00user 0.00system 0:00.00elapsed 66%CPU (0avgtext+0avgdata 2512maxresident)k
0inputs+0outputs (0major+106minor)pagefaults 0swaps

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

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

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

$ /usr/bin/time -a file.txt ls

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

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

$ /usr/bin/time -f "t%E real,t%U user,t%S sys" ls
dir1 dir2 file1 file2 mcelog
0:00.00 real, 0.00 user, 0.00 sys

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

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

$ man time

Вопрос для новичка. Как я могу проверить, как долго процесс или PID был запущен на моем сервере Ubuntu Linux?

Вы должны использовать команду ps, чтобы увидеть информацию об активных процессах. Команда PS имеет следующие варианта форматирования (вывода):

  1. etime показывает время , прошедшее с момента запуска процесса, в виде [[dd-] чч:] мм: сс.
  2. etimes показывает время , прошедшее с тех пор когда процесс был запущен, в секундах.

Как проверить, сколько времени процесс запущен?

Вам нужно добавить-о etimes или -О etime к команде ps. Синтаксис:

ps p {PIDHERE} o etime

ps p {PIDHERE} o etimes

Шаг 1: Найти PID процесса (скажем, OpenVPN)

Шаг 2: Как долго процесс OpenVPN был запущен?

ИЛИ

Чтобы скрыть заголовок:

$ ps p 6176 o etime=

$ ps p 6176 o etimes=

Примеры вывода команд:

how-check-how-long-process-running

PID процесса 6176, который требуется проверить. В этом случае я смотрю процесс OpenVPN. Вам необходимо заменить OpenVPN и PID # 6176 в соответствии с вашими требованиями.В этом примере показаны, PID, команда, прошедшее время, идентификатор пользователя и идентификатор группы:

$ ps p 6176 o pid,cmd,etime,uid,gid

Примеры результата:

PID  Команда                  Прошедшее время UID   GID

6176 /usr/sbin/openvpn daemon 15:25         65534 65534

Нет похожих статей.

Похожие вопросы

Как узнать аптайм данного процесса в Linux.

ps aux | grep gedit | grep -v grep

дает мне много информации, которая включает в себя время, когда процесс был запущен.
Я специально ищу switch, который возвращает время работы процесса в миллисекундах.

спасибо

источник

как «uptime» имеет несколько значений, вот полезная команда.

ps -eo pid,comm,lstart,etime,time,args

эта команда выводит список всех процессов с несколькими различными столбцами, связанными со временем. Он имеет следующие столбцы:

PID COMMAND                          STARTED     ELAPSED     TIME COMMAND

PID = идентификатор процесса

первый COMMAND = только имя команды без параметров и без аргументов

STARTED = абсолютное время начала процесса

ELAPSED = время, прошедшее с момента запуска процесса (времени), формат [[dd-]hh:]mm: ss
TIME = накопительное время процессора,» [dd-]hh:mm:ss » формат

second COMMAND = снова команда, на этот раз со всеми предоставленными параметрами и аргументами

отвечен Abdull 2012-08-21 14:46:10

источник

если у вас есть ограниченная версия ps таких как находится в busybox, вы можете получить время запуска процесса, глядя на метку /proc/<PID>. Например, если pid, который вы хотите посмотреть, 55…

# ls -al /proc | grep 55
dr-xr-xr-x    7 root     root             0 May 21 05:53 55

… а затем сравнить его с текущей датой…

# date
Thu May 22 03:00:47 EDT 2014

источник

Я думаю, что вы можете просто запустить:

$ stat /proc/1234

1234-идентификатор процесса.

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

$ stat /proc/9355
...
Access: 2017-11-13 17:46:39.778791165 +0100
Modify: 2017-11-13 17:46:39.778791165 +0100
Change: 2017-11-13 17:46:39.778791165 +0100
$ stat /proc/9209
...
Access: 2017-11-13 17:46:39.621790420 +0100
Modify: 2017-11-13 17:46:39.621790420 +0100
Change: 2017-11-13 17:46:39.621790420 +0100

источник

такая простая вещь не правильно ответил после 5 лет?

Я не думаю, что вы можете точно сделать миллисекунд. напр. если вы видите Man procfs и видите /proc / $$ / stat, который имеет поле 22 как startime, которое находится в «Clock ticks», у вас будет что-то более точное, но тики часов не собираются с совершенно постоянной скоростью (относительно «настенного времени») и будут выключены… сон и некоторые вещи (ntpd, я думаю) компенсируют это. Например, на машине, работающей под управлением ntpd, с 8 днями uptime и никогда не спал, dmesg-T имеет ту же проблему (я думаю…), и вы можете увидеть его здесь:

# date; echo h > /proc/sysrq-trigger; dmesg -T | tail -n1 ; date
Fri Mar  3 10:26:17 CET 2017
[Fri Mar  3 10:26:16 2017] sysrq: SysRq : HELP : loglevel(0-9) reboot(b) crash(c) terminate-all-tasks(e) memory-full-oom-kill(f) kill-all-tasks(i) thaw-filesystems(j) sak(k) show-backtrace-all-active-cpus(l) show-memory-usage(m) nice-all-RT-tasks(n) poweroff(o) show-registers(p) show-all-timers(q) unraw(r) sync(s) show-task-states(t) unmount(u) force-fb(V) show-blocked-tasks(w) 
Fri Mar  3 10:26:17 CET 2017

вот секунд:

# example pid here is just your shell
pid=$$

# current unix time (seconds since epoch [1970-01-01 00:00:00 UTC])
now=$(date +%s)

# process start unix time (also seconds since epoch)
# I'm fairly sure this is the right way to get the start time in a machine readable way (unlike ps)...but could be wrong
start=$(stat -c %Y /proc/"$pid")

# simple subtraction (both are in UTC, so it works)
age=$((now-start))

printf "that process has run for %s secondsn" "$age"

отвечен Peter 2017-03-03 09:35:12

источник

Да, слишком старые и слишком сложные вещи. Я попытался с выше предложенным методом «stat», но что, если бы у меня было»прикосновение» -ed PID proc dir вчера? Это означает, что мой летний процесс показан со вчерашней отметкой времени. Нет, не то, что мне нужно: (

в более новых, это просто:

ps -o etimes -p <PID>
ELAPSED
339521

как просто. Время присутствует в секундах. Делайте все, что вам нужно.
С некоторыми старыми коробками ситуация сложнее, так как нет времени. Можно рассчитывать on:

ps -o etime -p <PID>
ELAPSED
76-03:26:15

которые выглядят «немного» странно, так как он находится в формате dd-hh:mm:ss. Не подходит для дальнейшего расчета. Я бы предпочел его в секундах, поэтому я использовал этот:

ps -o etime -p <PID> --no-headers | awk -F '(:)|(-)' 'BEGIN{a[4]=1;a[3]=60;a[2]=3600;a[1]=86400;s=0};{for (i=NF;i>=1;i--) s=s+a[i]*$i}END{print s}'
339544

источник

Содержание

  1. Проверка времени процесса Linux с помощью Gnomon
  2. Установка Gnomon
  3. Использование Gnomon
  4. Доступны следующие варианты параметров:
  5. Проверка времени запущенного процесса с помощью команды ps
  6. Использование команды time в Ubuntu
  7. Заключение

Вы задавались вопросом, как найти время выполнения процесса в системе Linux или Unix? Это руководство покажет вам несколько инструментов, которые могут пригодиться при попытке найти время выполнения процесса в Linux.

Иногда приходится работать с медленно выполняющимися процессами. Медленным интернетом или запущенной программой, для которой необходимо отследить время выполнения. Давайте рассмотрим лучшие инструменты, которые вам стоит попробовать для этого.

Проверка времени процесса Linux с помощью Gnomon

Gnomon — это утилита, используемая для аннотирования протоколов консоли временными метками и поиска медленных процессов в системе Linux. Этот инструмент полезен для поиска долго выполняющихся процессов, когда вы хотите получить справку о том, что занимает так много времени.

Установка Gnomon

Так как Gnomon — это инструмент который написан на Node.js, в вашей системе должен быть установлен Node.js. Он необходим для установки gnomon с помощью менеджера пакетов npm. После того как инструмент npm будет установлен в вашей системе Linux. Перейдите к установке Gnomon с помощью команды:

$ npm install -g gnomon
/usr/local/bin/gnomon -> /usr/local/lib/node_modules/gnomon/bin/gnomon
+ gnomon@1.5.0
added 56 packages in 13.076s

Использование Gnomon

Чтобы добавить метку времени к каждой строке, нужно передать команду в gnomon. Это покажет, сколько времени заняло выполнение процесса. По умолчанию gnomon отображает секунды, прошедшие между каждой строкой, но это можно настроить.

Использование Gnomon

Использование Gnomon

Посмотрите на приведенный ниже пример, который показывает время, затраченное на выполнение 5 раз запроса ping к серверу google DNS.

Пример который показывает время затраченное на выполнение запроса ping

Пример который показывает время затраченное на выполнение запроса ping

Общее время составляет 3,3842 секунды.

Доступны следующие варианты параметров:

Ниже приведен список доступных вариантов:

-t | --type=<elapsed-line|elapsed-total|absolute> :

Тип временной метки для отображения.
elapsed-line: Количество секунд, в течение которых отображаемая строка была последней.
elapsed-total: Количество секунд с начала процесса.
absolute: Абсолютная временная метка в UTC.

Пример:

Пример использования Gnomon

Пример использования Gnomon

-f | —format=»format»: Форматирует абсолютную временную метку, используя строки формата даты PHP. Если тип — elapsed-line или elapsed-total, этот параметр игнорируется. По умолчанию используется формат «H:i:s.u O«.

-r | --real-time=<number|false>

Пример отключения обновления в реальном времени:

Gnomon Отключение обновления в реальном времени

Gnomon Отключение обновления в реальном времени

-h | —high=seconds : Высокий порог

-m | —medium=seconds : Средний порог. Работает так же, как и высокий порог, описанный выше, но вместо этого окрашивает метку времени в яркий цвет.

Проверка времени запущенного процесса с помощью команды ps

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

Чтобы определить идентификатор процесса, вы можете использовать такой инструмент, как pidof

$ pidof mpd
1388

Далее используйте ps с опциями -o etime, чтобы узнать время работы.

$ ps -p 1388 -o etime

ELAPSED
05-11:03:02

Опция etime отображает прошедшее время с момента запуска процесса в виде [[DD-]hh:]mm: ss. Из приведенного выше примера следует, что процесс выполняется 5 дней, 11 часов и 3 минуты. Используйте опцию etimes, чтобы получить прошедшее время в секундах.

Этот параметр команды также можно использовать для нескольких процессов. В примере ниже будет показано время запуска и время выполнения всех процессов на моем сервере Ubuntu.

$ ps -eo pid,lstart,etime,args

Время запуска и время выполнения всех процессов на сервере Ubuntu

Время запуска и время выполнения всех процессов на сервере Ubuntu

Вывод имеет 4 колонки:

PID — идентификатор запущенного процесса.

STARTED — Время, когда процесс был запущен.

ELAPSED — Общее время работы процесса.

COMMAND — Обработка выполненной команды.

Использование команды time в Ubuntu

Команда time сообщает сколько времени заняло выполнение команды в системе Linux. Вы можете установить ее, если она отсутствует в системе Ubuntu. Для этого используйте следующую команду.

$ sudo apt-get install time

Использование команда time:

# time [-p] command [arguments...]

Выход времени будет иметь:

  • Истекшее реальное время между вызовом команды и ее завершением.
  • Процессорное время пользователя.
  • Системное процессорное время.

Рассмотрим следующий пример для проверки использования диска в каталоге /root.

# time du -sh /root/

464K /root/
real 0m0.007s
user 0m0.002s

Из вывода видно, что фактическое время выполнения команды составляет 0m0.007s.

Давайте сделаем еще один, пинг на 8.8.8.8.

Еще одна проверка пинг с командой time

Еще одна проверка пинг с командой time

Фактическое время выполнения составляет 2,059 секунды.

Заключение

Теперь вы знаете, как узнать время выполнения процесса в Linux. Первый метод идеально подходит для интерактивных процессов. Для процессов которые работают в фоновом режиме, всегда можно узнать их время выполнения с помощью команды ps.

Если вы хотите выяснить, как долго процесс по какой-то причине работает в Linux. Это легко проверить с помощью команды «ps». Он показывает время безотказной работы данного процесса в виде [[ДД-] чч:] мм: сс в секундах, а также точную дату и время начала. В команде ps есть несколько вариантов, чтобы проверить это.

Как посмотреть время работы процессов?

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

  1. Шаг 1. Найдите идентификатор процесса с помощью команды ps. $ ps -ef | grep java.…
  2. Шаг 2: Найдите время выполнения или время начала процесса. Когда у вас есть PID, вы можете заглянуть в каталог proc для этого процесса и проверить дату создания, то есть когда процесс был запущен.

Как вы проверяете, выполняется ли процесс?

Показать активность в этом сообщении.

  1. если вы хотите проверить все процессы, используйте «верх»
  2. если вы хотите знать процессы, выполняемые java, используйте ps -ef | grep java.
  3. если другой процесс, просто используйте ps -ef | grep xyz или просто /etc/init.d xyz status.
  4. если через какой-либо код, например .sh, то статус ./xyz.sh.

Как узнать, кто запустил процесс в Linux?

Откройте окно терминала или приложение. Чтобы увидеть в Linux только процессы, принадлежащие определенному пользователю, запустите: ps -u {USERNAME} Найдите процесс Linux по имени run: pgrep -u {USERNAME} {processName} Другой вариант для перечисления процессов по имени — запустить любой из первых Команды -U {userName} или htop -u {userName}.

Как узнать, кто убил процесс Linux?

Журнал ядра должен отображать действия-убийцы OOM, поэтому используйте команду «dmesg», чтобы увидеть, что произошло, например, для виртуальной памяти Linux по умолчанию установлено избыточное выделение памяти.

Как проверить, как долго процесс работает в Windows?

Как проверить время запуска процесса в Windows?

  1. Щелкните Просмотр >> Выбрать столбцы.
  2. Щелкните вкладку «Производительность процесса» и выберите «Время начала».
  3. Нажмите на ОК.

18 июн. 2020 г.

Как вы проверяете, запущен ли процесс в Linux с помощью Java?

Если вы хотите проверить работу java-приложения, запустите команду ps с параметрами -ef, которая покажет вам не только команду, время и PID всех запущенных процессов, но и полный список, содержащий необходимые информация о исполняемом файле и параметрах программы.

Что такое время команды ps?

Команда ps (т. Е. Статус процесса) используется для предоставления информации о текущих запущенных процессах, включая их идентификационные номера процессов (PID). … ВРЕМЯ — это количество времени ЦП (центрального процессора) в минутах и ​​секундах, в течение которого выполнялся процесс.

Как проверить, запущен ли процесс bash?

Команды Bash для проверки запущенного процесса:

  1. Команда pgrep — просматривает запущенные в данный момент процессы bash в Linux и выводит на экран идентификаторы процессов (PID).
  2. Команда pidof — Найдите идентификатор процесса запущенной программы в Linux или Unix-подобной системе.

24 ночей. 2019 г.

Как убить процесс?

Чтобы убить процесс, используйте команду kill. Используйте команду ps, если вам нужно найти PID процесса. Всегда пытайтесь убить процесс простой командой kill. Это самый чистый способ убить процесс и имеет тот же эффект, что и отмена процесса.

Как проверить, запущен ли процесс Python?

Чтобы проверить, запущен процесс или нет, давайте переберем весь запущенный процесс с помощью psutil. process_iter () и сопоставьте имя процесса, т.е. проверьте, есть ли какой-либо запущенный процесс, который содержит данное имя processName. для proc в psutil.

Как убить процесс в Linux?

  1. Какие процессы можно убить в Linux?
  2. Шаг 1. Просмотр запущенных процессов Linux.
  3. Шаг 2: Найдите процесс, который нужно убить. Найдите процесс с помощью команды ps. Нахождение PID с помощью pgrep или pidof.
  4. Шаг 3. Используйте параметры команды Kill для завершения процесса. killall Команда. Команда pkill. …
  5. Ключевые выводы о завершении процесса Linux.

12 апр. 2019 г.

Как запустить процесс в Linux?

Запуск процесса

Самый простой способ запустить процесс — ввести его имя в командной строке и нажать Enter. Если вы хотите запустить веб-сервер Nginx, введите nginx.

Как мне увидеть общее количество процессов в Linux?

Узнайте, сколько процессов запущено в Linux

Можно использовать команду ps вместе с командой wc для подсчета количества процессов, запущенных в вашей системе на базе Linux любым пользователем. Следующие команды лучше всего запускать от имени пользователя root с помощью команды sudo.

В некоторых случаях при работе с терминалом Linux нужно знать время выполнения тех или иных команд, например, для отслеживания проблем. Для этой задачи существует утилита time. Конкретно про нее и пойдет речь в нашей статье.

Мы расскажем, как работает команда time Linux и какой у неё синтаксис. Затем перейдем к описанию доступных опций. А в конце упомянем несколько популярных сценариев использования.

Утилита запускает заданную пользователем команду и после этого выводит информацию о времени ее выполнения. У нее достаточно удобный синтаксис. Сначала нужно указать опции для time, затем – выполняемую команду, а в конце – аргументы к ней:

$ time опции команда_для_выполнения аргументы

Рассмотрим список доступных опций:

  • -o, —output – сохранять данные в выбранный файл вместо стандартного вывода в терминале. При этом старые данные в файле будут перезаписаны.
  • -a, —append – добавлять в файл новую информацию, а не перезаписывает старую. Опция полезна только в сочетании с -o.
  • -f, —format – выбрать определенный формат вывода. Подробности о форматировании описаны в следующем разделе статьи.
  • -p, —profitably – использовать формат вывода данных для соответствия со стандартом POSIX 1003.2.
  • -v, —verbose – выводить подробную информацию о выполнении программы.
  • -V, —version – вывести версию утилиты time.

В этом списке представлены только основные опции. Получить подробную информацию можно командой:

man time

Опции форматирования вывода

По умолчанию time может выводить информацию в не комфортном для чтения виде.

wOkvH25Ll+XQwAAAABJRU5ErkJggg==

По этой причине для нее желательно задавать опции форматирования вывода, о которых и пойдет сейчас речь. Всего их три штуки. В качестве примера для их рассмотрения возьмем команду apt-get update.

Опция -v используется для вывода подробной информации:

sudo time -v apt-get update

wF9RgGh8lwdFwAAAABJRU5ErkJggg==

Опция -p нужна для вывода данных в формате, соответствующем стандарту POSIX 1003.2:

sudo time -p apt-get update

F6XReMMI8NXTAAAAAElFTkSuQmCC

А с помощью опции -f или —format детально задается форматирование вывода. Этот момент стоит рассмотреть более детально.

Строка с данными о форматировании, как правило, включает в себя спецификаторы ресурсов и обычный текст. Знак % обозначает, что следующий после него символ следует воспринимать как спецификатор ресурсов.

С помощью знака задается разделительный символ. Есть три доступных варианта: t – табуляция, n – новая строка, \ – обратная косая черта. Если после указать любой другой символ, то в терминале появится вопросительный знак (?), который говорит об ошибке ввода.

Остальной текст в строке формата полностью копируется в поле вывода. При этом time всегда начинает вывод данных с новой строки после информации о выполнении самой команды.

Рассмотрим доступные спецификаторы ресурсов:

  • % – литерал %. То есть для вывода знака процента нужно в команде указать %%.
  • С – имя команды и использованные аргументы.
  • D – средний размер неразделенной области данных. Отображается в килобайтах.
  • E – реальное время выполнения команды в привычном часовом формате. Выводится в виде [часы:]минуты:секунды.
  • N – количество мажорных ошибок или ошибок, связанных с вводом-выводом, возникших при выполнении процесса.
  • I – количество входов в файловую систему.
  • K – среднее значение задействованной памяти для кода (text), инициализированных данных (data) и стека (stack). Отображается в килобайтах.
  • M – максимальный размер резидентного множества во время выполнения процесса в килобайтах.
  • O – количество выходов из файловой системы.
  • P – процент загруженности CPU (центрального процессора).
  • R – количество минорных ошибок.
  • S – время в секундах, в течении которого CPU использовался системой от имени процесса в режиме супервизора (kernel mode).
  • U – время в секундах, в течении которого CPU использовался процессом напрямую в пользовательском режиме (user mode).
  • W – сколько раз процесс был выгружен из оперативной памяти.
  • Xтут не понял.
  • Z – размер системной страницы. Это значение – константа, но она различается между системами.
  • c – количество невольных переключений контекста при выполнении процесса.
  • e – реальное время выполнения команды в привычном часовом формате. Выводится в секундах.
  • k – количество сигналов, дошедших до процесса.
  • p – средний размер неразделенного стека процесса, в килобайтах.
  • r – количество полученных сокетных сообщений.
  • s – количество отправленных сокетных сообщений.
  • t – средний размер резидентного множества процесса, в килобайтах.
  • w – количество добровольных переключений контекста при выполнении процесса.
  • x – код возврата для команды.

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

Как узнать время выполнения команды Linux

Мы рассмотрим три основных примера, которые довольно часто используются: вывод данных в терминал, вывод в отдельный файл и вывод с форматированием.

1. Вывод времени выполнения в терминал

В качестве примера мы возьмем команду sleep, которая делает паузу на указанное время. Это будет очень наглядный пример, ведь время паузы будет совпадать с временем выполнения команды в time:

time sleep 3

wHB2pye5mHgMgAAAABJRU5ErkJggg==

Обратите внимание, что время записано сразу же в трех графах. Пройдемся по каждой из них:

  • real – общее время от начала выполнения процесса и до его завершения.
  • user – время, в течение которого процесс был задействован в режиме пользователя (user mode).
  • sys – время, в течение которого процесс был задействован в режиме супервизора (kernel mode).

Следующий полезный сценарий – вывод времени, в течение которого загрузится заголовок веб-страницы через утилиту curl. В качестве примера возьмем наш сайт:

time curl -I https://losst.pro

A75zxCHQlT8cAAAAAElFTkSuQmCC

Еще хотелось бы упомянуть ситуацию, когда выполнение команды переводит окно терминала в другой режим, например, при запуске редактора nano для изменения файла /home/root-user/script.txt:

time nano /home/root-user/scripts/main_script.txt

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

x+cNC7Q2iimXwAAAABJRU5ErkJggg==

Теперь вы знаете как посмотреть время выполнения команды Linux.

2. Вывод в файл

Информацию о результатах работы команды time можно сохранить в отдельный файл с помощью опции -o. В таком случае в окне терминала они выводиться не будут. Возьмем для примера извлечение содержимого архива ~/data/data.tar.gz с помощью утилиты tar. Информацию о времени выполнения сохраним в новом файле ~/data/data_time.txt. Еще добавим к команде опцию -v, чтобы получить подробные сведения:

sudo time -v -o ~/data/data_time.txt tar -xvf ~/data/data.tar.gz -C ~/data

bcK5pZfv+QAAAABJRU5ErkJggg==

Файл получится следующего содержания.

c8P8ASXIrQpKBGcAAAAAASUVORK5CYII=

При использовании опции -o следует помнить, что она перезаписывает старую информацию в выходном файле на новую. Это применимо при создании новых файлов, но для ведения логов не подходит. С помощью дополнительной опции -a перезапись содержимого заменяется на добавление новой информации:

sudo time -v -a -o ~/data/data_time.txt tar -xvf ~/data/data.tar.gz -C ~/data

AQzh6DI6rLe2AAAAAElFTkSuQmCC

3. Вывод с форматированием

Исходный вариант форматирования данных подходит далеко не во всех случаях. В качестве примера мы возьмем ранее использованную команду для извлечения архива, но не станем сохранять данные в файл. При ее выполнении нам интересно:

  • Информация о самой команде и заданных опциях – это спецификатор %C.
  • Загруженность CPU – спецификатор %P.
  • Общее время выполнения в секундах – спецификатор %e.

Для комфортного восприятия каждый пункт будет выводиться в отдельной строке с помощью разделителя n. При этом они все будут подписаны понятным образом.

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

sudo time -f "Информация о команде:n%CnЗагруженность CPU: %PnВремя выполнения: %e сек" tar -xvf ~/data/data.tar.gz -C ~/data

8f7FfBnBvsvoYAAAAASUVORK5CYII=

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

Выводы

В рамках данной статьи вы узнали как работает команда time Linux, которая следит за выполнением заданной команды и выдает подробную информацию о времени выполнения и т. д. Основная сложность при ее использовании – понимание опций для форматирования вывода. Но если в них разобраться, то больше никаких проблем не возникнет. Для вашего удобства мы упомянули конкретные примеры использования.

Creative Commons License

Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

Понравилась статья? Поделить с друзьями:
  • Как правильно писать сбербанк в реквизитах
  • Как посмотреть время работы экрана samsung
  • Как правильно залить тосол в газель бизнес
  • Как проехать в аквапарк в нижнем новгороде
  • Как правильно пишется банковские реквизиты