Od linuxových fór po linuxové memy narazíte na dva příkazy pro vynucení ukončení programů v Linuxu; zabít a zabít.
Zatímco mnoho uživatelů Linuxu zná příkaz kill, jen málo lidí zná a používá příkaz killall.
A stejně to může být pro lidi matoucí. Oba příkazy mají podobný znějící název a podobný účel (ukončit procesy).
Jaký je tedy rozdíl mezi kill a killall? Jaký příkaz byste měli použít a v jakém případě byste je měli použít?
Rozdíl mezi příkazy kill a killall
Příkaz kill funguje na ID procesu (PID) a zabije procesy, pro které zadáte PID. Na druhou stranu příkaz killall pracuje s názvem procesu a zabije všechny procesy s danými názvy procesů. Například pokud existují tři instance mysqld
běží, zabije je killall všechny tři pomocí killall mysqld
vzhledem k tomu, že pro příkaz k ukončení musíte zadat PID všech tří instancí jako kill PID1 PID2 PID3
.
Jednodušeji řečeno, příkaz kill pracuje s PID (často individuální PID) a příkaz killall pracuje s názvem procesu a zabije všechny procesy s názvem procesu.
Dovolte mi to ukázat v akci.
Spustím tři instance programu nazvaného evince a pošlu jej na pozadí (běží dál, ale řízení vrátí terminálu).
evince &
evince &
evince &
Nyní mám tři programy spuštěné s názvem procesu evince, ale s různými ID procesu.
Chcete-li vynutit zastavení procesu pomocí příkazu kill, musíte zadat PID požadovaných procesů.
kill PID1
Zadejte však název procesu do příkazu killall a ten zabije všechny spuštěné instance s těmito názvy procesů.
killall evince
Podívejte se na níže uvedený snímek obrazovky, abyste viděli všechny příkazy v akci:
Jak si můžete všimnout zde, potřebujete znát ID procesu pro příkaz kill a musíte najít název procesu pro příkaz killall.
Který byste měli použít? Zabít nebo zabít?
Protože příkaz kill pracuje s jednotlivými procesy, je bezpečnější. Ostatně před spuštěním příkazu killall byste se měli ujistit, že neběží žádné podobně pojmenované procesy, které nechcete zabít.
Doufám, že už máte jasnou představu o příkazech kill a killallll. Neváhejte a položte otázku nebo návrh.