Как мне найти процесс по имени без использования grep?
Для поиска процесса вы можете использовать ps с grep,
Например, для поиска Firefox
ps aux | grep firefox
Как получить тот же ответ без использования grep?
8 ответов
pgrep команда и ее брат pkill, существует именно для этого:
pgrep firefoxперечислит все процессы, чьи команды совпадаютfirefoxpgrep -f firefoxперечислит все процессы, чьи командные строки совпадаютfirefoxpgrep -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'