Rumah > Artikel > Tutorial sistem > Bagaimanakah anda mematikan proses dalam Linux?
Jika anda ingin mematikan proses Linux
, anda boleh menggunakan beberapa kaedah. Jika proses berjalan di latar depan, anda boleh mematikannya menggunakan pintasan Ctrl+C. Walau bagaimanapun, jika proses berjalan di latar belakang dan tidak kelihatan, anda boleh menggunakan arahan khusus untuk mematikannya.
Untuk menamatkan proses, hentikannya semasa ia sedang dilaksanakan. Jika anda mengetahui ID (PID) proses tersebut, anda boleh mematikannya menggunakan arahan bunuh seperti berikut:
> kill
Dalam sintaks di atas, signal
指的是要发送终止的终止信号,并且PID
merujuk kepada ID proses.
Terdapat juga perintah bunuh, saya akan membincangkan arahan bunuh dan bunuh dalam artikel ini.
Apabila sesuatu proses ditamatkan oleh sistem pengendalian atau pengguna, iaitu proses itu tidak selesai sendiri, ia akan dihantar isyarat terminal.
Berikut ialah isyarat penamatan yang tersedia:
Isyarat | Nilai | Penerangan |
---|---|---|
MENEPEK | 1 | Penutup isyarat: Dihantar ke proses apabila terminal yang mengawalnya ditutup. |
SIGINT | 2 | Sampukan isyarat: Isyarat dihantar kepada proses apabila pengguna menamatkan proses (Contohnya, Ctrl + X) |
SIGKILL | 9 | Signal Kill: Isyarat yang segera keluar dari proses dan tidak membenarkannya menyelamatkan keadaan semasa. |
SIGTERM | 15 | Penamatan Isyarat: Dihantar kepada isyarat untuk meminta penamatan proses. Isyarat ini boleh diabaikan oleh proses. Tetapi ini adalah cara pilihan untuk menamatkan proses kerana ia membebaskan sumber apabila proses menerima SIGTERM. |
SIGSTOP | 19 (untuk x86, ARM dan kebanyakan yang lain) 17 (untuk Alpha) 23 (untuk MIPS) 24 (untuk PARISC) | Isyarat berhenti: Isyarat yang menghentikan proses, tetapi akan disambung semula kemudian. |
常用的信号 9 和 15
你还需要了解要终止的进程的详细信息。使用 kill 命令,你必须提供进程的 ID(PID)。你可以从进程名称中获取 PID
> pidof exact_process_name
比如获取java
进程的进程号
> pidof java 8075 1032
该kill
命令要求你知道要终止的进程的 ID,以及可选的终止信号。
要简单地终止命令,请使用以下语法:
kill [signal]
向 PID 发送终止信号是可选的,如果未提供任何信号,则kill
默认发送 SIGTERM ( 15
),以正常终止所述进程结束。
我启动了sleep 命令的后台进程(它给了我一个 PID)。我们使用kill
命令杀死它。
杀死这个特定的实例sleep
如下所示:
$ sleep 120 & [1] 125686 $ kill 125686 [1] + terminated sleep 120
如果我想使用终止信号,我可以使用数值或信号本身:
$ sleep 120 & [1] 125746 $ kill -SIGKILL 125746 [1] + killed sleep 120 $ sleep 120 & [1] 125759 $ kill -9 125759 [1] + killed sleep 120
如果 kill 命令没有指定信号,则默认使用 SIGTERM (15)。
如果不知道某个进程的PID是多少,或者该进程有多个子进程,又想一次性杀死子进程和父进程,可以使用killall
命令。
killall [signal]
与kill
命令类似,指定终止信号是可选的。当没有指定终止信号时,killall
将发送 SIGTERM ( 15
) 以优雅地关闭所述进程。
为了演示killall的使用,我将杀死两个正在运行的 sleep 命令。
$ sleep 120 & [1] 112351 $ sleep 2000 & [2] 112362 $ killall sleep [1]- Terminated sleep 120 [2]+ Terminated sleep 2000
此外,你可以使用该-e
标志来查找进程名称的完全匹配。
命令的替代命令kill
是pkill
命令。它是pgrep
和kill
命令的组合。
killall
杀死所有具有匹配名称的进程。另一方面,pkill
使用模式匹配来匹配进程并杀死它们。
pkill [options] pattern
命令中可用的一些有用选项pkill
如下:
-u
: 特定所有者拥有的进程-x
: 完全匹配模式的进程-signal
: 指定终止信号(默认为 SIGTERM)结束nginx
进程
> pkill nginx
Atas ialah kandungan terperinci Bagaimanakah anda mematikan proses dalam Linux?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!