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, слідує семантика "процеси вбивства по імені"