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

Когда мне нужно убить фоновый процесс, я делаю ps -e | grep <process_name> ps -e | grep <process_name>

Что печатает что-то вроде этого 1766 ? 00:00:13 conky 1766 ? 00:00:13 conky , Затем я использую идентификатор процесса, чтобы kill его так, как kill 1766 .

Есть ли способ упростить это? Сделать это быстрее? уменьшить количество ввода?

4 Solutions collect form web for “Поиск идентификатора процесса и его уничтожение”

(TL, DR: pgrep , pkill )

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

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

¹ Остерегайтесь того, что killall имеет другое значение в Solaris и, возможно, в других вариантах unix; не набирайте killall как root в Solaris.

  • killall ProcessName (есть недостаток этой команды в том, что вы не всегда знаете имя процесса программы).
  • pidof ProccessName и kill the result form pidof
  • ps xu | grep <process name> | grep -v grep | awk '{ print $2 }' | xargs kill -9 ps xu | grep <process name> | grep -v grep | awk '{ print $2 }' | xargs kill -9 Попробуйте использовать одну строку и повторно используйте ее в истории вашего bash или лучше создайте для нее псевдоним.

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

pidof PS Ханана можно кормить, чтобы kill напрямую с помощью обратных сигналов:

 kill `pidof processname` 

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

 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 

Обновить:

Извините, это явно не соответствует требованию меньше печатать, поэтому хорошим способом сделать это было бы добавление 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 
  • Как получить первый ответ PID приложения в команде pstree?
  • Как указать, какие имена полей отображаются в списках?
  • Почему pgrep не может найти скрипты, запущенные через env?
  • Как начать (или найти) процесс с RUID, отличным от EUID?
  • Почему я не получаю сообщение, которое не соответствует, когда я запускаю этот скрипт?
  • Как заставить все процессы работать на каждом ядре процессора в Ubuntu?
  • Создание сценария автоматического запуска бездействия
  • Команда «ps» не возвращает запрос
  • Периодически получать использование ЦП для одного процесса
  • Перенаправить вывод с несколькими командами
  • init: это пользовательский поток или поток ядра?
  • Interesting Posts

    Как я могу обернуть текст в два столбца?

    Замена нескольких звездочек в vi

    При установке Linux какие факторы влияют на выбор языка для сервера?

    Двойная путаница монитора в Ubuntu Gnome 17.10

    Как определить файлы формата dos в git bash

    Скопировать несколько файлов в один (добавить, слить) в один вызов без перенаправления оболочки?

    Монтирование FreeBSD UFS из логического раздела под Linux

    Как я могу игнорировать временные сбои в сценариях, выполняемых cron?

    Каковы хорошие утилиты организации документов?

    Как я могу напечатать условный заголовок до начала stdout, если есть какой-либо вывод на stdout

    Зачем нужно указывать два изображения init – initrd и boot – внутри KVM для загрузки в bash?

    Неверный выпуск du?

    Почему `sudo su -l -c" java "` работает, даже если `sudo su -l -c 'echo $ PATH" `отображает местоположение двоичного файла java?

    Как установить верхний предел для значения PCM при изменении громкости с помощью pulseaudio?

    Почему размер подкачки на 4 килобайта меньше, чем у базового устройства?

    Linux и Unix - лучшая ОС в мире.