Jak zabíjet procesy v Linuxu pomocí zabíjení, zabíjení a pkill

Co je to proces

Proces, také známý jako úkol, je běžící forma programu. Programy jsou uloženy na disku a procesy běží v paměti. Procesy mají vztah rodič / dítě. Proces může plodit jedno nebo více dětí. Paralelně může probíhat více procesů.

Výpis systémových procesů

Příkaz stav procesu (ps) uvádí procesy, které jsou spojeny s vaším shellem.

# ps [možnosti]

Pro každý proces příkaz ps zobrazí příkaz PID, identifikátor terminálu (TTY), kumulativní doba provedení (ČAS) a název příkazu (CMD). Například seznam aktuálně spuštěných procesů v systému pomocí příkazu ps.

# ps PID TTY TIME CMD 1442 bodů / 1 00:00:00 sudo 1448 bodů / 1 00:00:00 su 1449 bodů / 1 00:00:00 bash 1666 bodů / 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 procesech, které jsou nejčastěji požadovány, s výjimkou vedoucích procesních skupin 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ý výpis
  • -o formát: Píše informace podle specifikace formátu uvedené ve formátu. Lze zadat více možností -o. Specifikace formátu je interpretována jako konkatenace všech argumentů formátu oddělených mezerami.

Seznam všech procesů

For example, use the ‘ps -ef‘ command to list all the processes currently scheduled to run on the system.

# ps -ef | more

how to kill process using kill, killall and pkill in linux

Here,

  • UID: The username of the owner of the process
  • PID: The unique process identification number of the process
  • PPID: The parent process identification number of the process
  • STIME:The time the process started (hh:mm:ss)
  • TTY:The controlling terminal for the process. Note that system processes (daemons) display a question mark (?), indicating the process started without the use of a terminal.
  • TIME: The cumulative execution time for the process
  • CMD: The command name, options, and arguments

Terminating a Process

There might be times when you need to terminate an unwanted process. A process might have got into an endless loop, or it might have hung. You can kill or stop any process that you own. You can use the following two commands to terminate one or more processes:
– kill
– pkill

The kill and pkill commands send signals to processes directing them to terminate. Each signal has a number, name, and an associated event. Below are some of the most commonly used signals with their functionalities.

NumberNameDescription
1SIGHUPReload Configuration File
2SIGINTInterrupt by keyboard (ctrl+c)
9SIGKILLkill process
15SIGTERMEnd process immediately. (Terminate a process in controlled manner so cleanup is possible)
18SIGCONTContinue the process stopped with STOP
19STOPStop process
Note: However, there are processes that should not be terminated, such as the init process. Killing such processes can result in a system crash. A superuser can kill any process in the system.

Terminating a Process using kill Command

You can terminate any process by issuing the appropriate signal to the process concerned. The kill command sends signal 15, the terminate signal, by default. This signal causes the process to terminate in an orderly manner. The kill command sends a termination signal to one or more processes. The syntax to use the kill command is as follows :

# kill [-signal] PIDs
Note: The kill command terminates only those processes that you own. The root user can use the kill command on any process.

Než budete moci ukončit, musíte znát PID procesu. Příkaz ps nebo pgrep můžete použít k vyhledání PID procesu. Můžete také ukončit několik procesů současně zadáním více PID na jednom příkazovém řádku. Uvidíme příklad příkazu k zabití. Zabili bychom proces „spán 400“, jak je ukázáno níže.

# ps -ef | grep sleeproot 1337 1218 0 07:33 pts / 0 00:00:00 spánek 400
# kill -9 1337
# ps -ef | grep spánek #

Ukončení procesu pomocí příkazu pkill nebo killall

Případně můžete použít příkaz pkill nebo killall k odeslání signálu ukončení do procesů.

# pkill [-možnosti] PID

nebo

# killall [-options] PID

Příkaz pkill / killall vyžaduje, abyste místo PID procesu zadali název. Například pomocí příkazu pkill ukončete proces dtmail.

# pkill dtmail # pgrep -l mail #

Násilné ukončení procesu: Signál 9

Některé procesy ignorují výchozí signál 15, který příkaz kill odešle. Pokud proces nereaguje na signál 15, můžete jej donutit ukončit pomocí signálu 9 pomocí příkazu kill nebo pkill.

# kill -9 PID

nebo

# pkill -9 process_name
Poznámka: Signál odesílání 15 nutně proces nezabije elegantně. Pouze pokud je signál zachycen procesem, čistí se v pořádku a umírá. Pokud ne, prostě zemře.
Source: https://www.thegeekdiary.com/how-to-kill-processes-in-linux-using-kill-killall-and-pkill/#:~:text=The%20pkill%2Fkillall%20command%20requires%20you%20to%20specify%20the,default%20signal%2015%20that%20the%20kill%20command%20sends.