Як шукати процес по імені без використання grep?


62

Для того , щоб знайти процес , ви можете використовувати psз grep.

Наприклад для пошуку Firefox

ps aux | grep firefox

Як отримати ту саму відповідь без використання grep?


1
Мені цікаво, чому б ви хотіли це зробити, враховуючи, що ps/grepрішення працює так добре?
нейронет

ОП просто хоче, щоб я скорочував команду. Якщо є така річ, ps -n <process name>то це відповіло б його потребі. ps -n firefoxтрохи коротше, ніж ps | grep firefox. psвже може фільтрувати pidабо обробляти ідентифікатор користувача, тож розумне питання фільтрувати по імені процесу.
Йохем Шуленклоппер

Відповіді:


71

pgrepКоманда, і її рідний брат pkill, існує саме для цієї мети:

  • pgrep firefox перерахує всі процеси, команди яких відповідають firefox
  • pgrep -f firefox буде перераховано всі процеси, чиї командні рядки відповідають firefox
  • pgrep -x firefox перерахує всі процеси, команди яких точно відповідають firefox
  • ... і так далі.

І, природно, pgrepвиключить себе з матчу, тому жоден grepритуал, пов’язаний із цим, ps | grepне потрібен.


Іншим набором інструментів для цього є команди pidofта killallкоманди. Вони не такі гнучкі, як pgrepі pkill.

  • pidof firefox перерахує процеси, командою яких є firefox

24
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.

Це найкраща відповідь, але, на жаль, не працює на OSX. ps -CПрапор BSD поводиться зовсім інакше - "Змініть спосіб обчислення відсотка процесора"
masBlasta

2

topдозволяє шукати рядок при натисканні на великі регістри L; процес буде виділено, і використовуйте клавіші зі стрілками вгору та вниз для прокручування списку процесів. Аналогічно htopкоманда дозволяє виділити певний процес при попаданні /. І \фільтрує всі процеси за допомогою певного рядка в імені.

Для тих, хто любить awk, ось awk oneliner : ps -eF | awk '/process-name/ {print $11}' . З ps -eFім'ям процесу завжди в 11 - й колонці. Якщо ви ps -eF | awk '{print $11}' | sortотримаєте відсортований список імен процесів, відсортованих за алфавітом. Введіть його в lessкоманду просто для легшого перегляду довгого списку файлів.


2

Класна хитрість

$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 і ви можете шукати потрібне ім’я.


1

Ви також можете використовувати, htopа потім натиснути клавішу F4, щоб фільтрувати результати за відповідним рядком, визначеним користувачем. У вас також є спеціальна функція пошуку, натиснувши F3.



0

Я щойно прочитав цей псевдонім псевдоніму в блозі про поетизацію Леннарта. Вихід відповідає системному вихованню групи управління:

alias psc='ps xawf -eo pid,user,cgroup,args'
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.