Как мне найти процесс по имени без использования grep?
Для поиска процесса вы можете использовать ps
с grep
,
Например, для поиска Firefox
ps aux | grep firefox
Как получить тот же ответ без использования grep
?
8 ответов
pgrep
команда и ее брат pkill
, существует именно для этого:
pgrep firefox
перечислит все процессы, чьи команды совпадаютfirefox
pgrep -f firefox
перечислит все процессы, чьи командные строки совпадаютfirefox
pgrep -x firefox
перечислит все процессы, чьи команды точно совпадаютfirefox
- ... и так далее.
И естественно, pgrep
исключит себя из матча, поэтому ни один из grep
ритуалы, связанные с ps | grep
необходимы.
Другой набор инструментов для этого pidof
а также killall
команды. Это не так гибко, как pgrep
а также pkill
,
pidof firefox
будет перечислять процессы, команда которыхfirefox
ps -fC process-name
пример:
ps -fC firefox
от man ps
-C cmdlist Select by command name.
This selects the processes whose executable name is
given in cmdlist.
-f Do full-format listing. This option can be combined
with many other UNIX-style options to add additional
columns. It also causes the command arguments to be
printed. When used with -L, the NLWP (number of
threads) and LWP (thread ID) columns will be added. See
the c option, the format keyword args, and the format
keyword comm.
Крутой трюк
$ps -ejH
Вы получите все процессы с именами
exmple:
1747 568 568 ? 00:00:00 colord
1833 1832 1832 ? 00:00:00 gnome-keyring-d
2263 568 568 ? 00:00:00 udisksd
2311 2311 2311 ? 00:00:00 cupsd
2315 2315 2311 ? 00:00:00 dbus
Перенаправить или так скопировать вывод в файл, а затем открыть nano
нажмите Ctrl+W, и вы сможете найти нужное имя.
top
позволяет искать строку, когда вы нажимаете верхний регистр L
; процесс будет выделен, и используйте клавиши со стрелками вверх и вниз для прокрутки списка процессов. Так же,htop
Команда позволяет выделить конкретный процесс при нажатии /
, А также \
отфильтрует все процессы с определенной строкой в имени.
Для тех, кто любит awk, вот awel oneliner: ps -eF | awk '/process-name/ {print $11}'
, С ps -eF
Имя процесса всегда в 11-м столбце. В качестве альтернативы, если вы делаете ps -eF | awk '{print $11}' | sort
Вы получаете отсортированный список имен процессов, отсортированных по алфавиту. Труба это в less
Команда просто, чтобы просмотреть длинный список файлов проще.
Вы также можете использовать htop
и затем нажмите F4, чтобы отфильтровать результаты с соответствующей пользовательской строкой. У вас также есть функция пользовательского поиска, нажав F3.
Если проблема заключается в двух процессах, вы можете использовать только grep:
grep firefox /proc/*/cmdline
Если причина, по которой вы не хотите использовать
ps | grep
потому что он теряет первую строку (заголовки столбцов), вы можете сделать:
ps aux | grep 'firefox\|^USER'
Это поиск строки, содержащей
firefox
или строка, начинающаяся с
USER
(первая строка строки заголовка в моем дистрибутиве).
Я только что прочитал псевдоним пс в блоге Леннарта Поэтинга. Выходные данные соответствуют родительской группе systemd:
alias psc='ps xawf -eo pid,user,cgroup,args'