Co je to proces
Proces, známý také jako úloha, je běžící formou programu. Programy jsou uloženy na disku a procesy běží v paměti. Procesy mají vztah rodič/dítě. Proces může zplodit jedno nebo více potomků. Paralelně může běžet více procesů.
Výpis systémových procesů
Příkaz status status (ps) uvádí procesy, které jsou spojeny s vaším shellem.
# ps [options]
Pro každý proces zobrazí příkaz ps PID , identifikátor terminálu (TTY ), kumulativní doba provedení (TIME ) a název příkazu (CMD ). Například vypište aktuálně spuštěné procesy v systému pomocí příkazu ps.
# ps PID TTY TIME CMD 1442 pts/1 00:00:00 sudo 1448 pts/1 00:00:00 su 1449 pts/1 00:00:00 bash 1666 pts/1 00:00:00 ps
Příkaz ps má několik možností, které můžete použít k zobrazení dalších informací o procesu.
- -a :Vytiskne informace o všech nejčastěji požadovaných procesech, kromě vedoucích skupin procesů a procesů, které nejsou spojeny s terminálem
- -e :Vytiskne informace o každém aktuálně spuštěném procesu
- -f :Vygeneruje úplný seznam
- -l :Vygeneruje dlouhý seznam
- formát -o :Zapisuje informace podle specifikace formátu dané ve formátu. Lze zadat více voleb -o. Specifikace formátu je interpretována jako zřetězení všech argumentů možností formátu oddělených mezerami.
Výpis všech procesů
Použijte například ‘ps -ef ‘ k zobrazení seznamu všech procesů aktuálně naplánovaných ke spuštění v systému.
# ps -ef | more
Tady,
- UID :Uživatelské jméno vlastníka procesu
- PID :Jedinečné identifikační číslo procesu
- PPID :Identifikační číslo nadřazeného procesu
- ČAS :Čas zahájení procesu (hh:mm:ss)
- TTY :Řídicí terminál pro proces. Všimněte si, že systémové procesy (démoni) zobrazují otazník (?), který označuje proces spuštěný bez použití terminálu.
- ČAS :Kumulativní doba provádění procesu
- CMD :Název příkazu, možnosti a argumenty
Ukončení procesu
Mohou nastat situace, kdy budete muset ukončit nechtěný proces. Proces se mohl dostat do nekonečné smyčky nebo mohl přestat reagovat. Můžete zabít nebo zastavit jakýkoli proces, který vlastníte. K ukončení jednoho nebo více procesů můžete použít následující dva příkazy:
– kill
– pkill
Příkazy kill a pkill vysílají signály procesům, které je nasměrují k ukončení. Každý signál má číslo, název a přidruženou událost. Níže jsou uvedeny některé z nejčastěji používaných signálů s jejich funkcemi.
Číslo | Jméno | Popis |
---|---|---|
1 | SIGHUP | Znovu načíst konfigurační soubor |
2 | SIGINT | Přerušení klávesnicí (ctrl+c) |
9 | SIGKILL | zabít proces |
15 | SIGTERM | Okamžitě ukončete proces. (Ukončete proces kontrolovaným způsobem, aby bylo možné vyčištění) |
18 | SIGCONT | Pokračujte v procesu zastaveném pomocí STOP |
19 | STOP | Zastavit proces |
Ukončení procesu pomocí příkazu kill
Jakýkoli proces můžete ukončit vydáním příslušného signálu příslušnému procesu. Příkaz kill standardně vysílá signál 15, signál ukončení. Tento signál způsobí řádné ukončení procesu. Příkaz kill odešle signál ukončení jednomu nebo více procesům. Syntaxe pro použití příkazu kill je následující:
# kill [-signal] PIDsPoznámka :Příkaz kill ukončí pouze ty procesy, které vlastníte. Uživatel root může použít příkaz kill pro jakýkoli proces.
Než budete moci proces ukončit, musíte znát PID procesu. K vyhledání PID procesu můžete použít buď příkaz ps nebo pgrep. Také můžete ukončit několik procesů současně zadáním více PID na jeden příkazový řádek. Podívejme se na příklad příkazu kill. Zabili bychom proces ‚sleep 400‘, jak je ukázáno níže.
# ps -ef | grep sleep root 1337 1218 0 07:33 pts/0 00:00:00 sleep 400
# kill -9 1337
# ps -ef | grep sleep #
Ukončení procesu pomocí příkazu pkill nebo killall
Případně můžete použít příkaz pkill nebo killall k odeslání ukončovacího signálu procesům.
# pkill [-options] PIDs
nebo
# killall [-options] PIDs
Příkaz pkill/killall vyžaduje, abyste místo PID procesu uvedli název. Například použijte příkaz pkill k ukončení procesu dtmail.
# pkill dtmail # pgrep -l mail #
Násilné ukončení procesu:Signál 9
Některé procesy ignorují výchozí signál 15, který posílá příkaz kill. Pokud proces nereaguje na signál 15, můžete jej vynutit ukončení pomocí signálu 9 pomocí příkazu kill nebo pkill.
# kill -9 PID
nebo
# pkill -9 process_namePoznámka :Odeslání signálu 15 nutně nezabije proces elegantně. Pouze pokud je signál zachycen procesem, sám se v pořádku vyčistí a zemře. Pokud ne, prostě zemře.