GNU/Linux >> Znalost Linux >  >> Linux

Jaký je rozdíl mezi pkill a killall?

pgrep a pkill utility byly představeny v Solaris 7 od Sunu a jak poznamenal g33klord, berou jako argument vzor, ​​který se shoduje s názvy běžících procesů. Zatímco pgrep pouze vytiskne seznam odpovídajících procesů pkill odešle zadaný signál (nebo SIGTERM standardně) k procesům. Společné možnosti a sémantika mezi pgrep a pkill se hodí, když chcete být opatrní a nejprve zkontrolovat procesy přiřazování seznamů pomocí pgrep , pak pokračujte v jejich zabíjení pomocí pkill . pgrep a pkill jsou poskytovány balíkem procps, který také poskytuje další /proc nástroje systému souborů, jako je ps , top , free , uptime mimo jiné.

killall příkaz je poskytován balíčkem psmisc a liší se od pkill ve výchozím nastavení se přesně shoduje s názvem argumentu (až do prvních 15 znaků) při určování procesů, kterým budou signály odeslány. -e , --exact lze zadat také požadavek na přesné shody pro názvy delší než 15 znaků. To dělá killall poněkud bezpečnější použití ve srovnání s pkill . Pokud zadaný argument obsahuje lomítko (/ ) znaků, argument je interpretován jako název souboru a jako příjemci signálu budou vybrány procesy běžící v tomto konkrétním souboru. killall také podporuje shodu názvů procesů s regulárními výrazy prostřednictvím -r , --regexp možnost.

Existují i ​​další rozdíly. killall příkaz má například možnosti pro párování procesů podle věku (-o , --older-than a -y , --younger-than ), zatímco pkill může být řečeno, aby zabil procesy pouze na konkrétním terminálu (prostřednictvím -t volba). Je tedy zřejmé, že tyto dva příkazy mají specifické výklenky.

Všimněte si, že killall příkaz na potomcích systémů z Unix System V (zejména Solaris od Sunu, AIX od IBM a HP-UX od HP) zabije všechny procesy, které lze zabít konkrétním uživatelem, což efektivně vypne systém, pokud je spouští root.

Linuxové nástroje psmisc byly portovány na BSD (a v rozšíření Mac OS X), proto killall následuje sémantika „zabít procesy podle názvu“.


pkill je ten, který stojí za to učit budoucí generace, a to jak kvůli filtrům, které zmiňujete, tak kvůli skutečnosti, že je spárován s vysoce znovupoužitelným pgrep . Zabíjejí procesy stejným způsobem a ani jeden nezabíjí rekurzivně — i když s pgrep , můžete vybrat podle relace (per-tty, think setsid) nebo skupiny procesů (think job control).


jeden rozdíl je, že killall vezměte přesný název procesu jako argument, zatímco pkill může mít částečné nebo úplné jméno.

Na tuto otázku se můžete podívat, abyste se do hloubky dozvěděli o pkill


Linux
  1. Jaký je rozdíl mezi InnoDB a MyISAM?

  2. Rozdíl mezi Kill, Pkill a Killall?

  3. Jaký je rozdíl mezi strtok_r a strtok_s v C?

  1. Jaký je rozdíl mezi ls a l?

  2. Jaký je rozdíl mezi `su -` a `su --login`?

  3. Jaký je rozdíl mezi unlink a rm?

  1. Rozdíl mezi [[ $a ==Z* ]] a [ $a ==Z* ]?

  2. Jaký je rozdíl mezi Git Switch a Checkout?

  3. Jaký je rozdíl mezi trasou a ip trasou?