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

10

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

    
задан jumpnett 14.10.2010 в 16:19
источник

7 ответов

13

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

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

Если существует несколько процессов с тем же именем, но вы хотите только убить их, использование pidof не поможет вам, потому что оно даст вам pids, но оно не даст вам никаких информацию, чтобы определить, какая из pids принадлежит процессу, который вы действительно хотите убить.

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

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

    
ответ дан sepp2k 14.10.2010 в 16:40
источник
7

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

$ apropos pgrep
pgrep (1) - look up or signal processes based on name and other attributes
    
ответ дан sajb 14.10.2010 в 16:51
4

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

    
ответ дан TheXed 14.10.2010 в 16:24
2

У меня также была аналогичная проблема. Я использовал pstree -p ; это показало мне текущие запущенные процессы, включая идентификаторы процессов.

    
ответ дан Meintjes 25.04.2013 в 11:48
1

pidof . Введите man pidof для получения дополнительных сведений.

    
ответ дан mgunes 14.10.2010 в 16:21
1

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

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

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

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

    
ответ дан dylnmc 18.09.2014 в 21:12
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.

через man top

    
ответ дан Gui Imamura 08.01.2015 в 19:52