Перейти к содержимому

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

  • автор:

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

Нужно определить запущен ли процесс с конкретным именем в node js. Пробую запускать exec. При вызове команды в командной строке ubuntu.

ps -A 

Процессы выводятся, но имя процесса обрезается если длинное. Есть ли в node js средства для проверки запущенных процессов? Если нет то какой командой можно получить список запущенных процессов с полным названием процесса?

Отслеживать
задан 7 ноя 2018 в 9:45
6,363 7 7 золотых знаков 49 49 серебряных знаков 103 103 бронзовых знака
для node есть хороший пакет pm2 link
7 ноя 2018 в 10:36
@ЕвгенийНиколаев, только он тут совсем не при чём.
7 ноя 2018 в 10:46
@Qwertiy связанное с командой ps — да. Но pm2 это менеджер процессов для node.
7 ноя 2018 в 11:21

@ЕвгенийНиколаев, если я правильно понимаю, он хочет из nodejs получать список чужих процессов и что-то в нём искать.

Использование команды ps для просмотра процессов Linux

Консультация по продукту 1cloud

Команда ps выводит список текущих процессов на вашем сервере в виде таблицы, с которой можно удобно работать: сортировать, изменять количество колонок и прочие. У утилиты ps множество настроек, с помощью которых можно тонко настраивать вывод команды, также никто не запрещает вам делать конвейеры, чтобы отсечь всё лишнее. Например, можно вывести только первые строчки или наоборот последнее строчки, также можно сортировать строчки и искать вхождения: ps -A | head -5 # выведет первые 5 строчек отчёт, включая заголовок таблицы
ps -A | tail -5 # выведет последние 5 строчек отчёт
ps -A | grep «sys» #выведет все процессы с вхождениями sys Важно понимать, что команда ps в Linux выводит статический отчёт, её не получится использовать для непрерывного мониторинга состояния процессов, а вот top и htop — другое дело, они показывают реальную динамику по процессам. Суть работы команды ps в том, что она собирает данные из специальной директории /etc/proc, в которой находятся сведения о процессах и представляет их в удобной форме для восприятия. С работой команды ps в Linux всё просто, а вот разобраться в том, что такое процесс в Linux совсем непросто.

Что такое процесс в Linux

  • Ожидание — процесс ожидает сигнала для запуска или выделения системных ресурсов;
  • Выполнение — процесс запущен, либо готов к запуску;
  • Завершен — процесс был остановлен, получением сигнала завершения работы;
  • Зомби — такой статус получают дочерние процессы, когда родительский процесс, породивший их завершается раньше них. В таком случае им в качестве нового родителя назначается init-процесс.

В последним состоянии процессов мы упомянули родительские процессы. Это очень важный момент, так как все процессы в Linux имеют своего родителя и построены в древовидном виде. Стартовый процесс — первый процесс в пользовательском пространстве — это init-процесс, он порождает другие процессы.

Теперь, когда мы понимаем, как работает команда ps и, что такое процессы в Linux — можно переходить непосредственно к работе с утилитой ps.

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

Синтаксис команды ps очень просто: ps -[опция]. Однако опций у ps просто море, чтобы разобраться в них, мы разбили их на 2 группы:

  • Опции выбора процессов для отображения;
  • Опции работы с форматом вывода данных на экран.

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

  • -A, -e, (a) — выбрать все процессы;
  • -a — выбрать все процессы, кроме фоновых;
  • -d, (g) — выбрать все процессы, даже фоновые, кроме процессов сессий;
  • -N — выбрать все процессы кроме указанных;
  • -С — выбирать процессы по имени команды;
  • -G — выбрать процессы по ID группы;
  • -p, (p) — выбрать процессы PID;
  • —ppid — выбрать процессы по PID родительского процесса;
  • -s — выбрать процессы по ID сессии;
  • -t, (t) — выбрать процессы по tty;
  • -u, (U) — выбрать процессы пользователя.

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

PID TTY TIME CMD 1 ? 00:00:13 systemd 2 ? 00:00:00 kthreadd 3 ? 00:00:01 ksoftirqd/0 5 ? 00:00:00 kworker/0:0H 7 ? 00:00:01 migration/0 [. ]

Чтобы показать все процессы, кроме лидеров сессии, выполните:

Примечание: лидеры сеанса — процессы, у которых PID равен SID. Когда один процесс запускает другие процессы, он является лидером сеанса всех других процессов. Итак, представьте себе процесс A, который запускает процесс B и обрабатывает C. Процесс B запускает процесс D и процесс C запускает процесс E. Когда вы перечислите все процессы, за исключением сессий лидеров, вы увидите B, C, D и E, но не A.

Вы можете инвертировать вывод с помощью переключателя -N. Например, если вы хотите вывести только лидеров сеансов, выполните следующую команду:

Очевидно, что данную опцию не очень разумно использовать с ключами -e или -A, поскольку в таком случае в консоль ничего не выведется.

Если вы хотите увидеть только процессы, связанные с этим терминалом, выполните:

Если вы хотите просмотреть все работающие (running) процессы, используя следующую команду:

Выбор конкретных процессов

Вы можете вывести определенные процессы с помощью ps с помощью различных критериев выбора.

Например, если вы знаете идентификатор процесса PID, вы можете просто использовать следующую команду:

Вы можете выбрать несколько процессов, указав несколько идентификаторов процесса следующим образом:

ps -p «22813 28599»

Вы также можете указать их с помощью списка, разделенного запятыми:

ps -p 22813,28599

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

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

Например, чтобы узнать все процессы, выполняемые группой accounts, выполните следующие действия:

ps -G «accounts»
ps —Group «accounts»

Вы также можете выполнять поиск по идентификатору группы GID вместо имени группы с помощью строчной буквы g следующим образом:

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

Обратите внимание, что это показывает человека, чьи учетные данные используются для запуска команды. Например, если вы вошли в систему как gary и запустите указанную выше команду, она покажет всю команду, которую вы выполняете. Если вы входите в систему как tom и используете sudo для запуска команды, то приведенная выше команда покажет команду tоm’а, которую запускает gary, а не tom.

Чтобы ограничить список только процессами, действительно запущенными gary, используйте следующую команду:

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

По умолчанию вы получаете четыре столбца, когда используете команду ps: PID, TTY, Time, Command. О них написано в начале статьи.

Вы можете получить полный список, выполнив следующую команду:

Опция -e, показывает все процессы, а -f показывает полную информацию: UID — идентификатор пользователя выполняющего команду, PID — это идентификатор процесса команды, PPID — идентификатор родительского процесса, который отпустил команду, C — количество дочерних процессов, STIME — это время начала процесса, TTY, TIME, CMD.

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

Дополнительные столбцы — SZ, RSS и PSR. SZ — это размер процесса, RSS — реальный размер памяти, а PSR — процессор, которому назначена команда.

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

Доступны следующие форматы: %cpu, %mem, args, c, cmd, comm, cp, cputime, egid, egroup, etime, euid, euser, gid, group, pgid, pgrp, ppid, start, sz, thcount, time, uid, uname и многие другие, ознакомиться с ними в разделе помощи man.

Чтобы использовать форматы, введите следующее:

ps -e —format=»uid uname cmd time»

Вы можете смешивать и сопоставлять элементы по своему усмотрению.

Сортировка вывода

Чтобы отсортировать выходные данные, используйте следующие обозначения:

Доступны следующие форматы: cmd, pcpu, flags, pgrp, cutime, cstime, utime, pid, ppid, size, uid, user и многие другие, ознакомиться с ними в разделе помощи man.

Пример команды сортировки выглядит следующим образом:

ps -ef —sort user,pid

Использование ps совместно с grep, more и less

Команды less и more помогают вам подробно просматривать результаты по одной странице за раз:

ps -ef | more
ps -ef | less

Утилита grep помогает фильтровать результаты из команды ps, например, чтобы вывести строки содержащие ключевое слово nginx:

ps -ef | grep nginx

В двух словах о команде ps

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

Для вывода дерева процессов используется альтернативная команда ps — pstree. Команда ps выводит сведения о процессах в статическом виде. Для постоянного динамического мониторинга применяется команда htop. Конечно, это далеко не единственные программы для мониторинга процессов в Linux.

В нашей базе знаний есть статьи про другие программы мониторинга и аудита процессов и нагрузки в Linux:

  • Аудит процессов Linux с помощью утилиты Autrace;
  • Настройка и аудит системы Linux с помощью демона Auditd;
  • Установка и настройка связки Grafana, Graphite, Carbon, Collectd на Debian и Ubuntu.

А если вы ищете производительные VPS под управлением Linux для широкого круга задач — обратите внимание на нашу услугу VPS хостинга. Познакомиться с услугой и при желании её заказать можно по кнопке ниже.

Поделиться в соцсетях:

Средняя оценка: 4,9, всего оценок: 12 Спасибо за Вашу оценку! К сожалению, проголосовать не получилось. Попробуйте позже

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

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

/home/larry# ps PID TT STAT TIME COMMAND 24 3 S 0:03 (bash) 161 3 R 0:00 ps /home/larry#

Обратите внимание, что по умолчанию команда ps выводит список только тех процессов, которые принадлежат запустившему её пользователю. Чтобы посмотреть все исполняющиеся в системе процессы, нужно подать команду ps -a . Номера процессов (process ID, или PID ), указанные в первой колонке, являются уникальными номерами, которые система присваивает каждому работающему процессу. Последняя колонка, озаглавленная COMMAND, указывает имя работающей команды. В данном случае в списке указаны процессы, которые запустил сам пользователь larry . В системе работает ещё много других процессов, их полный список можно просмотреть командой ps -aux . Однако среди команд, запущенных пользователем larry , есть только bash (командная оболочка для пользователя larry ) и сама команда ps . Видно, что оболочка bash работает одновременно с командой ps . Когда пользователь ввёл команду ps , оболочка bash начала её исполнять. После того, как команда ps закончила свою работу (таблица процессов выведена на экран), управление возвращается процессу bash . Тогда оболочка bash выводит на экран приглашение и ждёт новой команды.

Работающий процесс также называют заданием (job). Понятия процесс и задание являются взаимозаменяемыми. Однако, обычно процесс называют заданием, когда имеют ввиду управление заданием (job control). Управление заданием — это функция командной оболочки, которая предоставляет пользователю возможность переключаться между несколькими заданиями.

В большинстве случаев пользователи запускают только одно задание — это будет та команда, которую они ввели последней в командной оболочке. Однако многие командные оболочки (включая bash и tcsh ) имеют функции управления заданиями (job control), позволяющие запускать одновременно несколько команд или заданий (jobs) и, по мере надобности, переключаться между ними.

Управление заданиями может быть полезно, если, например, вы редактируете большой текстовый файл и хотите временно прервать редактирование, чтобы сделать какую-нибудь другую операцию. С помощью функций управления заданиями можно временно покинуть редактор, вернуться к приглашению командной оболочки и выполнить какие-либо другие действия. Когда они будут сделаны, можно вернуться обратно к работе с редактором и обнаружить его в том же состоянии, в котором он был покинут. У функций управления заданиями есть ещё много полезных применений.

Передний план и фоновый режим

Задания могут быть либо на переднем плане (foreground), либо фоновыми (background). На переднем плане в любой момент времени может быть только одно задание. Задание на переднем плане — это то задание, с которым вы взаимодействуете; оно получает ввод с клавиатуры и посылает вывод на экран (если, разумеется, вы не перенаправили ввод или вывод куда-либо ещё). Напротив, фоновые задания не получают ввода с терминала; как правило, такие задания не нуждаются во взаимодействии с пользователем.

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

Для управления выполнением процессов в Linux предусмотрен механизм передачи сигналов. Сигнал — это способность процессов обмениваться стандартными короткими сообщениями непосредственно с помощью системы. Сообщение-сигнал не содержит никакой информации, кроме номера сигнала (для удобства вместо номера можно использовать предопределённое системой имя). Для того, чтобы передать сигнал, процессу достаточно задействовать системный вызов kill() , а для того, чтобы принять сигнал, не нужно ничего. Если процессу нужно как-то по-особенному реагировать на сигнал, он может зарегистрировать обработчик, а если обработчика нет, за него отреагирует система. Как правило, это приводит к немедленному завершению процесса, получившего сигнал. Обработчик сигнала запускается асинхронно , немедленно после получения сигнала, что бы процесс в это время ни делал.

Два сигнала — номер 9 ( KILL ) и 19 ( STOP ) — всегда обрабатывает система. Первый из них нужен для того, чтобы убить процесс наверняка (отсюда и название). Сигнал STOP приостанавливает процесс: в таком состоянии процесс не удаляется из таблицы процессов, но и не выполняется до тех пор, пока не получит сигнал 18 ( CONT ) — после чего продолжит работу. В командной оболочке Linux сигнал STOP можно передать активному процессу с помощью управляющей последовательности CtrlZ .

Сигнал номер 15 ( TERM ) служит для прерывания работы задания. При прерывании (interrupt) задания процесс погибает. Прерывание заданий обычно осуществляется управляющей последовательностью CtrlC [1] . Восстановить прерванное задание никаким образом невозможно. Следует также знать, что некоторые программы перехватывают сигнал TERM (при помощи обработчика), так что нажатие комбинации клавиш CtrlC (о) может не прервать процесс немедленно. Это сделано для того, чтобы программа могла уничтожить следы своей работы прежде, чем она будет завершена. На практике, некоторые программы вообще нельзя прервать таким способом.

Перевод в фоновый режим и уничтожение заданий

Начнём с простого примера. Рассмотрим команду yes, которая на первый взгляд может показаться бесполезной. Эта команда посылает бесконечный поток строк, состоящих из символа y на стандартный вывод. Посмотрим, как работает эта команда:

/home/larry# yes y y y y y

Последовательность таких строк будет бесконечно продолжаться. Уничтожить этот процесс можно, отправив ему сигнал прерывания, т. е. нажав CtrlC . Поступим теперь иначе. Чтобы на экран не выводилась эта бесконечная последовательность перенаправим стандартный вывод команды yes на /dev/null . Как вы, возможно, знаете, устройство /dev/null действует как « чёрная дыра »: все данные, посланные в это устройство, пропадают. С помощью этого устройства очень удобно избавляться от слишком обильного вывода некоторых программ.

/home/larry# yes > /dev/null

Теперь на экран ничего не выводится. Однако и приглашение командной оболочки также не возвращается. Это происходит потому, что команда yes все ещё работает и посылает свои сообщения, состоящие из букв y на /dev/null . Уничтожить это задание также можно, отправив ему сигнал прерывания.

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

Один способ перевести процесс в фоновый режим — приписать символ & к концу команды. Пример:

/home/larry# yes > /dev/null & [1]+ 164 /home/larry#

Сообщение [1] представляет собой номер задания (job number) для процесса yes. Командная оболочка присваивает номер задания каждому исполняемому заданию. Поскольку yes является единственным исполняемым заданием, ему присваивается номер 1. Число 164 является идентификационным номером, соответствующим данному процессу ( PID ), и этот номер также дан процессу системой. Как мы увидим дальше, к процессу можно обращаться, указывая оба этих номера.

Итак, теперь у нас есть процесс команды yes, работающий в фоне, и непрерывно посылающий поток из букв y на устройство /dev/null . Для того, чтобы узнать статус этого процесса, нужно исполнить команду jobs , которая является внутренней командой оболочки.

/home/larry# jobs [1]+ Running yes >/dev/null & /home/larry#

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

Для того, чтобы передать процессу сигнал (чаще всего возникает потребность прервать работу задания) используется утилита kill . В качестве аргумента этой команде даётся либо номер задания, либо PID . Необязательный параметр — номер сигнала, который нужно отправить процессу. По умолчанию отправляется сигнал TERM . В рассмотренном выше случае номер задания был 1, так что команда kill %1 прервёт работу задания. Когда к заданию обращаются по его номеру (а не PID ), тогда перед этим номером в командной строке нужно поставить символ процента (« % »).

Теперь введём команду jobs снова, чтобы проверить результат предыдущего действия:

/home/larry# jobs [1] Terminated yes >/dev/null

Фактически задание уничтожено, и при вводе команды jobs следующий раз на экране о нем не будет никакой информации.

Уничтожить задание можно также, используя идентификационный номер процесса ( PID ). Этот номер, наряду с идентификационным номером задания, указывается во время старта задания. В нашем примере значение PID было 164, так что команда kill 164 была бы эквивалентна команде kill %1 . При использовании PID в качестве аргумента команды kill вводить символ « % » не требуется.

Приостановка и продолжение работы заданий

Запустим сначала процесс командой yes на переднем плане, как это делалось раньше:

/home/larry# yes > /dev/null

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

Теперь вместо того, чтобы прервать задание комбинацией клавиш CtrlC , задание можно приостановить (suspend, буквально — подвесить ), отправив ему сигнал STOP . Для приостановки задания надо нажать соответствующую комбинацию клавиш, обычно это CtrlZ .

/home/larry# yes > /dev/null Ctrl-Z[1]+ Stopped yes >/dev/null /home/larry#

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

Для возобновления выполнения задания на переднем плане можно использовать команду fg (от слова foreground — передний план).

/home/larry# fg yes >/dev/null

Командная оболочка ещё раз выведет на экран название команды, так что пользователь будет знать, какое именно задание он в данный момент запустил на переднем плане. Приостановим это задание ещё раз нажатием клавиш CtrlZ , но в этот раз запустим его в фоновый режим командой bg (от слова background — фон). Это приведёт к тому, что данный процесс будет работать так, как если бы при его запуске использовалась команда с символом & в конце (как это делалось в предыдущем разделе):

/home/larry# bg [1]+ yes $>$/dev/null & /home/larry#

При этом приглашение командной оболочки возвращается. Сейчас команда jobs должна показывать, что процесс yes действительно в данный момент работает; этот процесс можно уничтожить командой kill , как это делалось раньше.

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

Между заданиями в фоновом режиме и приостановленными заданиями есть большая разница. Приостановленное задание не работает — на него не тратятся вычислительные мощности процессора. Это задание не выполняет никаких действий. Приостановленное задание занимает некоторый объем оперативной памяти компьютера, через некоторое время ядро откачает эту часть памяти на жёсткий диск « до востребования ». Напротив, задание в фоновом режиме выполняется, использует память и совершает некоторые действия, которые, возможно, вам требуются, но вы в это время можете работать с другими программами.

Задания, работающие в фоновом режиме, могут пытаться выводить некоторый текст на экран. Это будет мешать работать над другими задачами.

/home/larry# yes &

Здесь стандартный вывод не был перенаправлен на устройство /dev/null , поэтому на экран будет выводится бесконечный поток символов y . Этот поток невозможно будет остановить, поскольку комбинация клавиш CtrlC не воздействует на задания в фоновом режиме. Для того чтобы остановить эту выдачу, надо использовать команду fg , которая переведёт задание на передний план, а затем уничтожить задание комбинацией клавиш CtrlC .

Сделаем ещё одно замечание. Обычно командой fg и командой bg воздействуют на те задания, которые были приостановлены последними (эти задания будут помечены символом + рядом с номером задания, если ввести команду jobs ). Если в одно и то же время работает одно или несколько заданий, задания можно помещать на передний план или в фоновый режим, задавая в качестве аргументов команды fg или команды bg их идентификационный номер (job ID). Например, команда fg %2 помещает задание номер 2 на передний план, а команда bg %3 помещает задание номер 3 в фоновый режим. Использовать PID в качестве аргументов команд fg и bg нельзя.

Более того, для перевода задания на передний план можно просто указать его номер. Так, команда %2 будет эквивалентна команде fg %2 .

Важно помнить, что функция управления заданием принадлежит оболочке. Команды fg , bg и jobs являются внутренними командами оболочки. Если, по некоторой причине, вы используете командную оболочку, которая не поддерживает функции управления заданиями, то вы в ней этих (и подобных) команд не отыщете.

[1] Прерывающая комбинация клавиш может быть установлена с помощью команды stty .

Список процессов Linux

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

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

Table of Contents

  • Список процессов в Linux
    • 1. Утилита ps
    • 2. Утилита top
    • 3. Утилита htop
    • 4. Программа Gnome Monitor
    • 5. Утилита atop

    Список процессов в Linux

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

    • Процесс — если говорить простыми словами, это программа и её данные, загруженные в память компьютера;
    • Дочерний процесс — процессы могут запускать другие процессы для выполнения параллельных задач или других целей такие процессы называются дочерними. Для них выделяется отдельная область в памяти;
    • Поток — поток отличается от процесса тем, что использует ту же память, данные и дескрипторы файлов, что и процесс, в котором он был создан.

    1. Утилита ps

    Самый простой способ посмотреть список процессов, запущенных в текущей командой оболочке, использовать команду ps без параметров:

    Но вряд-ли вас интересует именно это. Чтобы посмотреть все процессы, добавьте опцию -e, а для максимально подробной информации — опцию -F:

    Вот значение основных колонок в выводе утилиты:

    • UID — имя пользователя, от имени которого работает процесс;
    • PID — идентификатор пользователя;
    • PPID — идентификатор родительского процесса;
    • C — расходование ресурсов процессора, в процентах;
    • SZ — размер процесса;
    • RSS — реальный размер процесса в памяти;
    • PSR — ядро процессора, на котором выполняется процесс;
    • STIME — время, когда процесс был запущен;
    • TTY — если процесс привязан к терминалу, то здесь будет выведен его номер;
    • TIME — общее время выполнения процесса (user + system);
    • CMD — команда, которой был запущен процесс, если программа не может прочитать аргументы процесса, он будет выведен в квадратных скобках;

    Чтобы посмотреть список процессов в виде дерева, и понимать какой процесс имеет какие дочерние процессы, выполните команду:

    Для просмотра списка процессов с потоками используйте опцию -L:

    Здесь появятся ещё две дополнительных колонки:

    • LWP — Это сокращение от LightWeight Proccess. Идентификатор потока;
    • NLWP — количество потоков у этого процесса.

    Чтобы посмотреть список процессов определенного пользователя, например, sergiy используйте опцию -u:

    Теперь давайте перейдём к другим, более интересным, интерактивным утилитам.

    2. Утилита top

    Утилита top не поставляется вместе с системой, поэтому вам придется её установить. Для этого в Ubuntu выполните:

    sudo apt install top

    Программа позволяет интерактивно просматривать список запущенных процессов Linux. Чтобы вывести список процессов Linux выполните команду:

    Колонки, которые выводит программа очень похожи на ps:

    • PID — идентификатор процесса;
    • USER — имя пользователя, от имени которого выполняется процесс;
    • PR — приоритет планировщика, установленный для процесса;
    • NI — рекомендуемый приоритет процесса. Это значение можно менять, может не совпадать с реальным приоритетом планировщика;
    • VIRT — всё, что находится в памяти, используется или зарезервировано для использования;
    • RES — всё, что находится в оперативной памяти и относится к процессу. Расшифровывается как Resident Memory Size, указывается в килобайтах;
    • SHR — часть памяти из RES, которую занимают ресурсы, доступные для использования другим процессам. Расшифровывается — Shared Memory Size.
    • S — состояние процесса: D — ожидает завершения операции, R — запущен, S — спит, T — остановлен, t — остановлен отладчиком, Z — зомби;
    • %CPU — процент использования ресурсов процессора;
    • %MEM — процент использования ресурсов оперативной памяти на основе колонки RES;
    • TIME — обще процессорное время, которое процесс использовал с момента запуска;
    • COMAND — команда, с помощью которой был запущен процесс.

    Для того чтобы сделать вывод программы цветным, нажмите Z:

    Чтобы вывести дерево процессов Linux нажмите сочетание клавиш Shift+V:

    Для отображения потоков нажмите Shift + H:

    Если вам недостаточно стандартных полей с информацией о процессах, вы можете нажать Shift + F и выбрать дополнительные поля, которые надо отображать. Для выбора или удаления поля используйте пробел:

    3. Утилита htop

    Это ещё более мощная утилита для просмотра запущенных процессов в Linux. Пользоваться ею намного удобнее. Здесь поддерживаются не только горячие клавиши, но и управление мышью. А ещё она выводит всё в цвете, поэтому смотреть на данные намного приятнее. Для установки программы выполните:

    sudo apt install htop

    Для того чтобы запустить выполните в терминале:

    Колонки, которые вы увидите в выводе программы, аналогичны тем, что доступны в top, поэтому я не буду рассматривать их здесь отдельно. Для настройки выводимых данных нажмите кнопку F2, затем перейдите в раздел Display Options:

    Здесь надо отметить Tree view для вывода списка процессов в виде дерева, а также снять отметки с пунктов Hide threads. для отображения потоков. Здесь есть как потоки пространства пользователя userland process threads, так и потоки пространства ядра — kernel threads. Теперь всё это будет отображаться:

    Для того чтобы настроить какие колонки будут отображаться используйте пункт меню Columns:

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

    4. Программа Gnome Monitor

    Вы можете смотреть запущенные процессы не только в терминале, но и в графическом интерфейсе. Для этого можно использовать утилиту Gnome Monitor. У неё намного меньше возможностей, по сравнению даже с ps, но зато у неё есть графический интерфейс. Вы можете запустить программу из главного меню системы:

    По умолчанию утилита отображает только процессы текущего пользователя. Если вы хотите получить все процессы кликните по иконке бутерброда и выберите Все процессы:

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

    5. Утилита atop

    Эта программа тоже позволяет посмотреть процессы в Linux , но немного в другом ключе. Утилиту больше интересует сколько тот или иной процесс потребляет ресурсов системы. Утилита даже может показывать потребление процессами пропускной способности диска и сети, но для этого ей необходим специальный патч ядра. Для установки программы в Ubuntu выполните:

    sudo apt install atop

    Затем запустите её:

    Вот основные колонки, которые выводит утилита и их значения:

    • PID — идентификатор процесса;
    • CID — идентификатор контейнера, используется для контейнеров Docker;
    • SYSCPU — время, потраченное процессом на выполнение в пространстве ядра;
    • USRCPU — время, потраченное процессом на выполнение в пространстве пользователя;
    • VGROW — увеличение использования памяти колонки VIRT за последний период;
    • RGROW — увеличение использования памяти колонки RSS за последний период;
    • ST — статус процесса, N — новый, E — завершенный, S и С — процесс завершен принудительно с помощью сигнала;
    • EXC — код выхода или код сигнала, которым был завершен процесс;
    • THR — общее количество потоков в этом процессе;
    • S — состояние процесса, аналогично описанному для top;
    • CPUNR — номер ядра процессора, на котором запущен основной поток процесса;
    • CPU — процент использования ресурсов процессора;
    • CMD — команда, которой была запущена программа;
    • MEM — процент использования памяти;

    Для того чтобы включить отображение потоков процесса нажмите y:

    Для просмотра информации о памяти нажмите m, если хотите вернутся обратно, нажмите g:

    Выводы

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

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

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