Pass pid от openssl sha до perf [duplicate]

Я запускаю программу в терминале, которую я не могу избежать с помощью Ctrl-C и что я хочу убить. Как я могу найти его PID?

92
задан 25 August 2012 в 20:00

17 ответов

Откройте другой терминал и запустите ps ax | grep foo, где foo - это имя невосприимчивой программы. Это должно возвращать строку вывода, которая выглядит примерно так:

$ ps ax | grep firefox 2222 ? S 0:00 /bin/sh /usr/lib/firefox-3.6.9/firefox 2231 ? Sl 514:36 /usr/lib/firefox-3.6.9/firefox-bin 30290 pts/2 S+ 0:00 grep --color=auto firefox

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

Чтобы остановить процесс нарушения, выполните: kill pid, где pid - это идентификатор процесса программы. Возможно, вам придется использовать свое мнение относительно какой из совпадений должен быть kill ed, или вы могли бы использовать top вместо этого. Использование kill само по себе отправляет SIGTERM, который вы должны попробовать сначала, так как он позволяет программе правильно очищать после себя. Если SIGTERM не работает , попробуйте SIGHUP, который является более жестким лекарством: kill -HUP pid. Если все остальное не удается, отправьте SIGKILL. Но вы должны сделать это только в качестве последнего средства, потому что SIGKILL заставляет ядро ​​немедленно прекратить процесс без возможности очистки. могут иногда приводить к повреждению данных или другим проблемам.Таким образом, только отправьте SIGKILL в крайнем случае. Для этого сделайте kill -KILL pid или kill -9 pid.

Если вы запустите Разумеется, при использовании графического интерфейса вам не нужно обманывать эту сумасшедшую информацию из командной строки, чтобы выполнить эту работу. Просто откройте «Системный монитор», перейдите на вкладку «Процессы», выберите процесс, который вы хотите остановить (Hm, может быть, он использует 90% CPU?) И щелкните его правой кнопкой мыши. Поскольку процесс уже остановлен (это проблема, верно?), Выберите в появившемся меню команду «Завершить процесс» или «Убить процесс».

Кредит на koanhead
102
ответ дан 18 July 2018 в 02:56

Откройте другой терминал и запустите ps ax | grep foo, где foo - это имя невосприимчивой программы. Это должно возвращать строку вывода, которая выглядит примерно так:

$ ps ax | grep firefox 2222 ? S 0:00 /bin/sh /usr/lib/firefox-3.6.9/firefox 2231 ? Sl 514:36 /usr/lib/firefox-3.6.9/firefox-bin 30290 pts/2 S+ 0:00 grep --color=auto firefox

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

Чтобы остановить процесс нарушения, выполните: kill pid, где pid - это идентификатор процесса программы. Возможно, вам придется использовать свое мнение относительно какой из совпадений должен быть kill ed, или вы могли бы использовать top вместо этого. Использование kill само по себе отправляет SIGTERM, который вы должны попробовать сначала, так как он позволяет программе правильно очищать после себя. Если SIGTERM не работает , попробуйте SIGHUP, который является более жестким лекарством: kill -HUP pid. Если все остальное не удается, отправьте SIGKILL. Но вы должны сделать это только в качестве последнего средства, потому что SIGKILL заставляет ядро ​​немедленно прекратить процесс без возможности очистки. могут иногда приводить к повреждению данных или другим проблемам.Таким образом, только отправьте SIGKILL в крайнем случае. Для этого сделайте kill -KILL pid или kill -9 pid.

Если вы запустите Разумеется, при использовании графического интерфейса вам не нужно обманывать эту сумасшедшую информацию из командной строки, чтобы выполнить эту работу. Просто откройте «Системный монитор», перейдите на вкладку «Процессы», выберите процесс, который вы хотите остановить (Hm, может быть, он использует 90% CPU?) И щелкните его правой кнопкой мыши. Поскольку процесс уже остановлен (это проблема, верно?), Выберите в появившемся меню команду «Завершить процесс» или «Убить процесс».

Кредит на koanhead
102
ответ дан 24 July 2018 в 17:41

Вы можете сделать:

ps ax | grep firefox | cut -f2 -d" " - | xargs kill -9

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

0
ответ дан 18 July 2018 в 02:56

Для тех, кто работает с Ubuntu 16.04 LTS, вы должны использовать ps ax, а не только ps в командной строке, иначе вы просто получите процессы, нерестующие из конкретного экземпляра терминала, в котором вы находитесь. (обычно просто " bash '[оболочка, в которой вы находитесь] и' ps '[что вы только что запускали])

0
ответ дан 18 July 2018 в 02:56

Самый простой способ узнать pid запущенной программы:

pidof <application name>

Например, если вы начали vim и хотите узнать его pid:

pidof vim

Помните, что вам нужно будет указать точное имя программы, которое было запущено.

Например, если вы используете vi и выполняете pidof vim, вы не получите правильных результатов.

Дополнительную информацию см. на странице руководства pidof.

16
ответ дан 18 July 2018 в 02:56

Я нашел неплохо использовать регистр без учета регистра, добавив «-i» и используя «aux» вместо «ax», чтобы получить более описательный вывод:

ps aux | grep -i firefox

If вы хотели бы убить все процессы, которые вы можете использовать:

ps aux | grep -i firefox | awk {'print $2'} | xargs kill -9

Это силовое убийство. Бросьте «-9», если вы хотите мягкое убийство.

13
ответ дан 18 July 2018 в 02:56

Если вы хотите только pid (полезно для скриптов autokill и т. д.)

pgrep -f desired_program_name
3
ответ дан 18 July 2018 в 02:56

Я не думаю, что есть необходимость в таких длинных командах, когда вы можете выполнять те же команды с pgrep, pkill, pidof и т. д. ...

Чтобы получить pid из Running-Program [ ! d1]

pgrep:

pgrep [options] pattern

pgrep: pgrep просматривает текущие запущенные процессы и перечисляет идентификаторы процессов, которые соответствуют критериям выбора для stdout. Все критерии должны соответствовать. Например,

Чтобы получить pid Running-Program Перечислите процессы, принадлежащие демонам root ИЛИ. $ pgrep -u root,daemon

pidof:

pidof: :

Pidof находит идентификаторы процесса (pids) названных программ. Он выводит эти идентификаторы на стандартный вывод.

синтаксис: pidof имя_программы

Список процессов, принадлежащих демонам root ИЛИ. $ pgrep -u root,daemon
30
ответ дан 18 July 2018 в 02:56

Вы также можете открыть другой терминал (или переключиться на другой tty) и запустить top, который представляет собой текстовую версию системного монитора. В первом столбце указан PID каждого запущенного процесса, который вы можете убить, нажав K, введя PID и затем введите числовой сигнал для отправки.

0
ответ дан 18 July 2018 в 02:56

Вы можете сделать:

ps ax | grep firefox | cut -f2 -d" " - | xargs kill -9

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

0
ответ дан 24 July 2018 в 17:41
  • 1
    kill -9 - самое большое оружие, которое вы должны убить. Сначала вы должны попробовать более мягкий сигнал, прежде чем приступать к SIGKILL, чтобы дать процессу возможность очистить свои ресурсы. – Byte Commander 28 September 2016 в 00:30
  • 2
    Это правда @ByteCommander. Я хотел сделать это одним лайнером, который выполнит свою работу. – Arian Soltani 28 September 2016 в 09:40

Для тех, кто работает с Ubuntu 16.04 LTS, вы должны использовать ps ax, а не только ps в командной строке, иначе вы просто получите процессы, нерестующие из конкретного экземпляра терминала, в котором вы находитесь. (обычно просто " bash '[оболочка, в которой вы находитесь] и' ps '[что вы только что запускали])

0
ответ дан 24 July 2018 в 17:41

Самый простой способ узнать pid запущенной программы:

pidof <application name>

Например, если вы начали vim и хотите узнать его pid:

pidof vim

Помните, что вам нужно будет указать точное имя программы, которое было запущено.

Например, если вы используете vi и выполняете pidof vim, вы не получите правильных результатов.

Дополнительную информацию см. на странице руководства pidof.

16
ответ дан 24 July 2018 в 17:41
  • 1
    По умолчанию он не установлен. Это может быть в пакете sysvinit-utils. – flickerfly 20 September 2014 в 00:24
  • 2
    Я получил MariaDB. pidof mysqld возвращает PID. Однако, если я набираю pidof Mariadb, ничего не возвращается. Это тот же PID для MariaDB и MySQL? – Pathros 13 June 2018 в 18:18

Я нашел неплохо использовать регистр без учета регистра, добавив «-i» и используя «aux» вместо «ax», чтобы получить более описательный вывод:

ps aux | grep -i firefox

If вы хотели бы убить все процессы, которые вы можете использовать:

ps aux | grep -i firefox | awk {'print $2'} | xargs kill -9

Это силовое убийство. Бросьте «-9», если вы хотите мягкое убийство.

13
ответ дан 24 July 2018 в 17:41
  • 1
    Это также убивает процесс ps aux | grep -i firefox..., потому что в его команде содержится текст firefox! – Eric 21 July 2014 в 14:41
  • 2
    @Eric вы можете использовать grep -i firefo[x] для соответствия только firefox – A.D. 22 April 2016 в 12:36
  • 3
    @ john-foley никогда не советует использовать -9 с kill, см. здесь для объяснений – A.D. 22 April 2016 в 12:38

Если вы хотите только pid (полезно для скриптов autokill и т. д.)

pgrep -f desired_program_name
3
ответ дан 24 July 2018 в 17:41

Я не думаю, что есть необходимость в таких длинных командах, когда вы можете выполнять те же команды с pgrep, pkill, pidof и т. д. ...

Чтобы получить pid из Running-Program [ ! d1]

pgrep:

pgrep [options] pattern

pgrep: pgrep просматривает текущие запущенные процессы и перечисляет идентификаторы процессов, которые соответствуют критериям выбора для stdout. Все критерии должны соответствовать. Например,

Чтобы получить pid Running-Program Перечислите процессы, принадлежащие демонам root ИЛИ. $ pgrep -u root,daemon

pidof:

pidof: :

Pidof находит идентификаторы процесса (pids) названных программ. Он выводит эти идентификаторы на стандартный вывод.

синтаксис: pidof имя_программы

Список процессов, принадлежащих демонам root ИЛИ. $ pgrep -u root,daemon
31
ответ дан 24 July 2018 в 17:41

Вы также можете открыть другой терминал (или переключиться на другой tty) и запустить top, который представляет собой текстовую версию системного монитора. В первом столбце указан PID каждого запущенного процесса, который вы можете убить, нажав K, введя PID и затем введя числовой сигнал для отправки.

0
ответ дан 24 July 2018 в 17:41
top

или

screen -list|ls

перечислить все pid с соответствующим процессом

kill -[pid]
0
ответ дан 7 October 2018 в 21:18

Другие вопросы по тегам:

Похожие вопросы: