Я хочу выйти из процесса с помощью командной строки, но не могу вспомнить команду, чтобы найти идентификатор процесса. Кто-нибудь знает это?
Вы можете запустить ps -A
в терминале, чтобы показать все процессы (с их идентификатором процесса), которые в данный момент выполняются.
Мой любимый это pstree -p | grep $(program_name)
. Это на самом деле затирает процесс, выделяет его и показывает pid в скобках.
Мой следующий фаворит (особенно при программировании и использовании всех пидов из процесса) - pgrep -law ""
. Это буквально дает вам каждый запуск pid, за которым следует приложение (с абсолютным путем).
Это может быть уменьшено до pgrep -lw ""
для pid с последующим именем программы или даже просто pgrep -l
для всех pid
Конечно, вы можете искать определенную программу (или часть имени программы) , (то есть pgrep -lw firef
, вероятно, будет отображать что-то вроде «4567 firefox»).
Команда для определения идентификатора процесса (с учетом его имени) - pidof
. Однако, поскольку вы намереваетесь завершить процесс, есть лучшие / более простые способы, чем использовать pidof
, чтобы сначала найти его pid:
Предполагая, что процесс, который вы хотите уничтожить, уникально идентифицируется по его имени (или вы хотите чтобы убить все процессы с таким именем), вам не нужно знать его pid. Вы можете просто сделать killall processname
.
Если есть несколько процессов с одинаковыми именами, но вы хотите убить только один из них, использование pidof
не сильно вам поможет, потому что даст вам pids, но не даст вам никакого информация, чтобы определить, какой из pids принадлежит процессу, который вы на самом деле хотите убить.
В этом случае вы можете сделать ps aux | grep processname
, который покажет все процессы с заданным именем, а также консоль, на которой они запущены (если применимо), и аргументы, с которыми они были вызваны, что, как мы надеемся, позволит вам идентифицировать процесс, который вы ищете.
Если процесс открыл какие-либо X-окна, вы также можете использовать xkill
для уничтожения (вызовите xkill
и затем нажмите на окно).
Вы должны взглянуть на pgrep
и pkill
, две очень удобные и мощные утилиты, которые встречаются в большинстве систем Linux и UNIX.
$ apropos pgrep
pgrep (1) - look up or signal processes based on name and other attributes
У меня тоже была похожая проблема. Я использовал pstree -p
; это показало мне текущие запущенные процессы, включая идентификаторы процессов.
Этот ответ от @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