Нахождение идентификатора процесса и уничтожение его

Команда cd - заберет Вас к предыдущему каталогу.

Также изучите pushd и popd команды, которые могут использоваться, чтобы в основном сохранить заказанный список каталогов, в которых Вы были и возвращаетесь к ним.

16
18.12.2011, 01:32
4 ответа

(TL, DR: pgrep, pkill)

Много вариантов Unix, с которыми идут pgrep и его компаньон pkill: Солярис, Linux (часть стандартных утилит процесса, может отсутствовать во встроенных системах Linux), FreeBSD, OpenBSD, NetBSD, …, но только от MacPorts на OS X, не AIX, и только недавно в HP-UX. pgrep утилита показывает идентификатор процесса процессов, подобранных по имени, пользователь и несколько других критериев. Аргумент pgrep интерпретируется как regexp, который должен соответствовать части имени исполняемого файла процесса (если Вы не передаете опцию изменить это). Если Вы звоните pkill вместо pgrep, утилита отправляет сигнал вместо того, чтобы отобразить идентификаторы процесса.

Другая подобная утилита является pidof. На Linux это обеспечивается SysVinit или BusyBox (таким образом, Вы будете часто находить его во встроенной системе Linux, которая не имеет pgrep); на других вариантах Unix существуют также порты. pidof утилита имеет меньше опций, она главным образом только соответствует целым именам исполняемого файла. Его сопутствующая утилита killall отправляет сигнал в подобранные программы ¹.

¹ Остерегаются этого killall имеет другое значение на Солярисе и возможно других вариантах Unix; не вводить killall как базируются на Солярисе.

19
27.01.2020, 19:48
  • 1
    Ничего себе, Ваш ответ очень подробен, намного больше подробно, Спасибо. Отредактируйте вопрос соответствовать ответу, если это возможно. –  Gautam 18.12.2011, 02:21
  • 2
    @GautamK я не думаю вопрос, нужно расширение. Если Вы делаете, не стесняйтесь редактировать его сами. –  Gilles 'SO- stop being evil' 18.12.2011, 02:39
  • 3
    Из ответов с большей частью количества голосов Ваш ответ предоставляет больше подробную информацию, таким образом, я принимаю его –  Gautam 24.12.2011, 17:20
  • killall ProcessName (существует недостаток с этой командой в этом, Вы не всегда знаете название процесса программы).
  • pidof ProccessName и kill the result form pidof
  • ps xu | grep <process name> | grep -v grep | awk '{ print $2 }' | xargs kill -9 Попробуйте эту строку и снова используйте ее, формируют историю Вашего удара или лучше создают псевдоним для него.
8
27.01.2020, 19:48
  • 1
    Второе pidof кажется легче, но тем не менее требуется 2 –  Gautam 18.12.2011, 01:49
  • 2
    шагов, которые я могу искать одну команду строки, которые делают это за один шаг (с грубым именем процесса), но это потребовало бы, чтобы Вы ввели длинную линию (который более тверд, что два шага выше), или Вы могли ввести его однажды и снова использовать его, формируют историю. –  Hanan N. 18.12.2011, 01:54
  • 3
    @GautamK я обновил ответ с единственной опцией команды. –  Hanan N. 18.12.2011, 01:58

В то время как Hanan имеет некоторые хорошие предложения, добавлю я pgrep / pkill. Они позволяют намного более прекрасное управление, по которому процессу Вы находите, и регулярные выражения, если Вы не будете знать точный процесс, то необходимо будет уничтожить.

P.S. Hanan pidof может питаться к kill непосредственно с обратными галочками:

kill `pidof processname`
6
27.01.2020, 19:48
  • 1
    pkill был точно, что я искал, я большую часть времени знаю имя процесса, Главным образом conky или firefox или chrome или что-то как этот. Спасибо –  Gautam 18.12.2011, 02:16

Как насчет этого -

ps -e | awk '$4~/<process name>/{print $1}' | xargs kill

Пример:

[jaypal:~/Temp] sleep 100&
[1] 74863
[jaypal:~/Temp] ps -e | awk '$4~/sleep/{print $1}' | xargs kill
[1]+  Terminated: 15          sleep 100

Обновление:

Извините, это, очевидно, не отвечает требованию меньшего количества ввода так хороший способ сделать, это должно было бы добавить a function к Вашему .bashrc, .profile или безотносительно сценария запуска. Функция может быть чем-то вроде этого -

killp() {
awk -v pname="$1" '($4==pname){print $1}' <(ps -e) | xargs kill
}

После того, как добавленный, можно просто передать название процесса:

[jaypal:~] sleep 100&
[1] 77212
[jaypal:~] killp sleep
[1]+  Terminated: 15          sleep 100
1
27.01.2020, 19:48

Теги

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