Що таке термінальна команда для пошуку ідентифікатора процесу


12

Я хочу вийти з процесу за допомогою командного рядка, але я не можу пригадати команду для пошуку ідентифікатора процесу. Хтось це знає?

Відповіді:


13

Команда виявити ідентифікатор процесу (з урахуванням його імені) є pidof. Однак, оскільки ваш намір полягає в тому, щоб вбити процес, існують кращі / простіші способи, ніж pidofспочатку знайти його pid:

Якщо припустити, що процес, який ви хочете вбити, однозначно ідентифікується за його ім’ям (або ви хочете вбити всі процеси з цим іменем), вам не потрібно знати його pid. Можна просто зробити killall processname.

Якщо є кілька процесів з тим самим іменем, але ви хочете вбити лише один із них, використання pidofне допоможе вам сильно, тому що це дасть вам підказки, але не дасть вам ніякої інформації, щоб визначити, який із pids належить до процесу, який ви насправді хочете вбити.

У цьому випадку ви можете зробити це, ps aux | grep processnameщо покаже всі процеси з даним іменем, а також консоль, на якій вони працюють (якщо це застосовно), та аргументи, на які вони були викликані, що, сподіваємось, дозволяє ідентифікувати процес, який ви шукаєте .

Якщо процес відкрив будь-які вікна X, ви також можете скористатися xkillдля вбивства (викликати xkillта натиснути на вікно).


7

Ви повинні дивитися на pgrepі pkill, два дуже зручних і потужних утиліт, які можна знайти на більшості систем Linux і UNIX.

$ apropos pgrep
pgrep (1) - look up or signal processes based on name and other attributes

5

Ви можете запустити ps -Aв терміналі, щоб показати всі процеси (з їх ідентифікатором процесу), які зараз запущені.


Труба для grepпошуку назви конкретного процесу:ps -A | grep 'my name'
Габріель Стейплз

2

У мене також була схожа проблема. Я використовував pstree -p; це показало мені поточні запущені процеси, включаючи ідентифікатори Process.


цікава команда
jumpnett


1

Моя улюблена pstree -p | grep $(program_name). Це насправді відображає процес, виділяє його і показує pid у дужках.

Наступним моїм улюбленим (особливо при програмуванні та необхідності всіх підключень у процесі) є pgrep -law "". Це буквально дає вам кожну програму запуску та додаток (з абсолютним шляхом).

Це може бути зменшено до pgrep -lw ""pid, а потім назва програми або навіть просто pgrep -lдля всіх

Звичайно, ви можете шукати певну назву програми (або частини програми). (тобто pgrep -lw firef, ймовірно, відображатиметься щось на зразок "4567 firefox").


Не pstree -psH $(pgrep prgram_name)було б краще для першого випадку?
muru

Так, це теж працює. Ви можете створити псевдонім для цього. Я просто використовував $ () для представлення імені програми; Я думаю, що введення $ (назва pgrep) трохи дратує через знак долара, але я думаю, псевдонім це може бути корисним.
dylnmc

0

Ця відповідь від @Ben на повторне запитання вирішила мою проблему:

Подумайте про використання topкоманди в терміналі.

   The  top  program  provides  a dynamic real-time view of a running
   system.  It can display system summary information as  well  as  a
   list  of processes or threads currently being managed by the Linux
   kernel.  The types of system summary  information  shown  and  the
   types,  order  and size of information displayed for processes are
   all user configurable and that configuration can be  made  persis‐
   tent across restarts.

через людину зверху

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.