pgrep
І pkill
комунальні послуги були введені в компанії Sun Solaris 7 і, як зазначив g33klord , вони беруть зразок в якості аргументу , який зіставляється з іменами запущених процесів. Поки pgrep
просто друкує список відповідних процесів, pkill
він надсилатиме вказаний сигнал (або SIGTERM
за замовчуванням) процесам. Загальні параметри та семантика між pgrep
та pkill
корисними, коли ви хочете бути обережними та спочатку перегляньте процеси відповідності списку pgrep
, а потім приступайте до їх знищення pkill
. pgrep
і pkill
надаються в PROCPS пакет, який також надає іншу /proc
файлову систему утиліта, такі як ps
, top
, free
, uptime
серед інших.
killall
Команда забезпечується Psmisc пакет, і відрізняється від pkill
в тому , що, за замовчуванням, збігається з ім'ям аргументу точно (до перших 15 символів) при визначенні процесів сигнали будуть відправлені. -e
, --exact
Параметр може бути встановлений також вимагають точних збігів імен довжиною до 15 символів. Це робить killall
дещо безпечнішим у використанні порівняно з pkill
. Якщо вказаний аргумент містить /
знаки слэш ( ), аргумент інтерпретується як ім'я файлу, і обробляється процес, що працює в певному файлі, буде обраний як отримувач сигналу. killall
також підтримує регулярні вирази імен процесів, через -r
, --regexp
варіант.
Є й інші відмінності. killall
Команди, наприклад , має опції для узгодження процесів за віком ( -o
, --older-than
і -y
, --younger-than
), в той час як pkill
можна сказати тільки вбивати процеси на конкретному терміналі (через -t
опції). Зрозуміло, що обидві команди мають конкретні ніші.
Зауважте, що killall
команда на системах, що походять від Unix System V (зокрема , Solaris Sun , IBM AIX та HP-UX HP ), вбиває всі процеси, які можна піддавати вказівці певним користувачем.
Утиліти psmisc Linux були перенесені в BSD (і в розширенні Mac OS X ), отже killall
, слідує семантика "процеси вбивства по імені"