Již jsme diskutovali o příkazu kill, který můžete použít v případě, že chcete ukončit procesy v Linuxu. Existuje však další nástroj příkazového řádku, který můžete použít pro stejný účel:killall . V tomto tutoriálu probereme základy tohoto příkazu pomocí několika snadno srozumitelných příkladů.
Ale než to uděláme, stojí za zmínku, že všechny příklady zahrnuté v tomto tutoriálu byly testovány na Ubuntu 18.04 LTS.
Linux killall příkaz
Příkaz killall vám umožňuje zabít procesy podle názvu. Následuje syntaxe nástroje:
killall [OPTIONS] name
A zde je návod, jak manuálová stránka vysvětluje tento nástroj:
killall sends a signal to all processes running any of the specified commands. If no signal name is specified, SIGTERM is sent. Signals can be specified either by name (e.g. -HUP or -SIGHUP) or by number (e.g. -1) or by option -s.
If the command name is not regular expression (option -r) and contains a slash (/), processes executing that particular file will be selected for killing, independent of their name.
killall returns a zero return code if at least one process has been killed for each listed command, or no commands were listed and at least one process matched the -u and -Z search criteria. killall returns non-zero otherwise.
A killall process never kills itself (but may kill other killall processes).
Následující příklady ve stylu otázek a odpovědí by vám měly poskytnout lepší představu o tom, jak příkaz killall funguje.
O1. Jak používat příkaz killall?
Základní použití nástroje je velmi snadné – vše, co musíte udělat, je předat název procesu jako argument pro killall. Chcete-li například zabít gthumb proces, který běžel v mém systému, jsem použil killall následujícím způsobem:
killall gthumb
Pamatujte, že v případě, že si nejste vědomi přesného názvu procesu, můžete použít ps příkaz k načtení těchto informací.
O2. Rozlišuje killall malá a velká písmena?
Ano to je. Vyhodí chybu „nenalezen žádný proces“, pokud se uživateli nepodaří napsat název procesu se správnými velkými písmeny. Následuje příklad:
Pokud však chcete, můžete přinutit killall ignorovat malá a velká písmena pomocí -I možnost příkazového řádku.
Q3. Jak přimět killall, aby se zeptal před ukončením procesu?
Předpokládejme, že chcete, aby se příkaz killall před ukončením procesu zeptal na uživatelská oprávnění, pak můžete použít -i možnost příkazového řádku. Díky tomu bude operace killall interaktivní.
Například:
4. Jak vybrat signál, který killall odešle ke zpracování?
Ve výchozím nastavení je to signál SIGTERM, který killall posílá procesům. Můžete však vysílat i jiné signály. Můžete použít možnosti -s , --signál a -SIGNAL k odeslání těchto dalších signálů.
Aby to však fungovalo, musíte vědět, jaké všechny signály může příkaz killall vysílat. To můžete provést pomocí -l možnost příkazového řádku.
killall -l
Následuje seznam výše uvedených příkazů vytvořených v našem systému:
O5. Jak zabránit tomu, aby si killall stěžoval, pokud zadaný proces neexistuje?
Pokud proces, jehož název je předán „killall“, neběží (neexistuje), nástroj to uživateli předá ve výstupu.
Pokud však nechcete, aby nástroj produkoval takový výstup, můžete použít -q možnost příkazového řádku.
Můžete tedy vidět, že příkaz killall zůstal tichý, když bylo použito -q.
O6. Jak zabít všechny procesy vlastněné uživatelem?
Pokud je požadavkem zabít všechny procesy, které vlastní konkrétní uživatel, můžete použít -u možnost, kterou poskytuje killall. Netřeba dodávat, že tato možnost vyžaduje, abyste jako vstup uvedli uživatelské jméno uživatele.
killall -u [user-name]
Například:
killall -u himanshu
O7. Jak zabít procesy založené na čase?
Předpokládejme, že chcete zabít všechny procesy, které nyní běží déle než 5 hodin, pak to můžete provést pomocí -o možnost následujícím způsobem:
killall -o 5h
Samozřejmě můžete zadat názvy procesů, pokud nechcete zabít všechny procesy. Podobně, pokud chcete zabít procesy, které jsou řekněme méně než 4 hodiny staré, můžete to udělat pomocí -y možnost příkazového řádku.
killall -y 4h
Zde je návod, jak manuálová stránka vysvětluje tyto možnosti:
-o, --older-than
Match only processes that are older (started before) the time
specified. The time is specified as a float then a unit. The
units are s,m,h,d,w,M,y for seconds, minutes, hours, days,
weeks, Months and years respectively.
-y, --younger-than
Match only processes that are younger (started after) the time
specified. The time is specified as a float then a unit. The
units are s,m,h,d,w,M,y for seconds, minutes, hours, days,
weeks, Months and years respectively.
O8. Jak zajistit, aby se killall vrátil až poté, co procesy zemřou?
Po doručení signálu procesem killall, pokud se chcete ujistit, že se příkaz vrátí až poté, co proces zemře, můžete to udělat pomocí -w možnost příkazového řádku, která přinutí killall čekat.
killall -w [process-name]
Návod popisuje tuto možnost takto:
-w, --wait
Wait for all killed processes to die. killall checks once per
second if any of the killed processes still exist and only
returns if none are left. Note that killall may wait forever if
the signal was ignored, had no effect, or if the process stays
in zombie state.
Závěr
Killall možná není pro nováčky bábovka, ale také není příliš složitý. Musíte si procvičit možnosti příkazového řádku, které nabízí. O většině z nich jsme diskutovali, takže tento tutoriál by měl být dobrým výchozím bodem. Jakmile s nimi budete hotovi, můžete si o příkazu přečíst více na jeho manuálové stránce.