Что такое терминальная команда для определения идентификатора процесса


12

Я хочу выйти из процесса с помощью командной строки, но не могу вспомнить команду, чтобы найти идентификатор процесса. Кто-нибудь знает это?

Ответы:


13

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

Предполагая, что процесс, который вы хотите уничтожить, уникально идентифицируется по его имени (или вы хотите уничтожить все процессы с этим именем), вам не нужно знать его pid. Вы можете просто сделать killall processname.

Если есть несколько процессов с одним и тем же именем, но вы хотите убить только один из них, использование pidofне сильно вам поможет, потому что даст вам pids, но не даст вам никакой информации, чтобы определить, какой из 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; это показало мне текущие запущенные процессы, включая идентификаторы процессов.


интересная команда
jumpnett


1

Мой любимый это pstree -p | grep $(program_name). Это на самом деле затирает процесс, выделяет его и показывает pid в скобках.

Мой следующий фаворит (особенно при программировании и необходимости всех пидов из процесса) pgrep -law "". Это буквально дает вам каждый запуск pid, за которым следует приложение (с абсолютным путем).

Это может быть уменьшено pgrep -lw ""для pid с последующим именем программы или даже pgrep -lдля всех pid

Конечно, вы можете искать определенную программу (или часть названия программы). (то есть pgrep -lw firef, вероятно, будет отображать что-то вроде «4567 firefox»).


Не было pstree -psH $(pgrep prgram_name)бы лучше для первого случая?
Муру

Да, это тоже работает. Вы могли бы сделать псевдоним для этого. Я просто использовал $ () для представления имени программы; Я думаю, что ввод $ (имя 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.