2021-02-27 分類: 網(wǎng)站建設(shè)
1. 前言
我們經(jīng)常在Linux里使用kill命令來結(jié)束某后臺進(jìn)程。但kill命令實際上是向進(jìn)程發(fā)送信號,并且有多種信號。終止運行一個程序只是其中一個信號而已。kill是根據(jù)進(jìn)程號發(fā)送信號的,而另一個工具killall是根據(jù)進(jìn)程名稱發(fā)送信號的。
2. 查看kill支持的信號
[root@zcwyou ~]# kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
linux查看kill選項
3. 結(jié)束進(jìn)程
普通用戶只能使用不帶signal參數(shù)的kill命令
一般情況下,最多使用-9信號。即強(qiáng)制結(jié)束某個進(jìn)程。
比如強(qiáng)制結(jié)束進(jìn)程號為123的進(jìn)程。
先確認(rèn)進(jìn)程號:
[root@zcwyou ~]# top
linux查看進(jìn)程號
然后根據(jù)進(jìn)程號強(qiáng)制結(jié)束:
[root@zcwyou ~]# kill -9 123
默認(rèn)情況,kill使用信號15結(jié)束進(jìn)程,并且是安全的。而信號 9 則是處理異常進(jìn)程的,請勿濫用
4. kill其它常用信號
代號名稱內(nèi)容1SIGHUP啟動被終止的程序,可讓該進(jìn)程重新讀取自己的配置文件,類似重新啟動。2SIGINT相當(dāng)于用鍵盤輸入 [ctrl]-c 來中斷一個程序的進(jìn)行。9SIGKILL代表強(qiáng)制中斷一個程序的進(jìn)行,如果該程序進(jìn)行到一半,那么尚未完成的部分可能會有“半產(chǎn)品”產(chǎn)生,類似 vim會有 .filename.swp 保留下來。15SIGTERM以正常的方式來終止該程序。由于是正常的終止,所以后續(xù)的動作會將他完成。不過,如果該程序已經(jīng)發(fā)生問題,就是無法使用正常的方法終止時,輸入這個 signal 也是沒有用的。19SIGSTOP相當(dāng)于用鍵盤輸入 [ctrl]-z 來暫停一個程序的進(jìn)行。
5. 殺死用戶user1的所有進(jìn)程
[root@zcwyou ~]# kill -9 $(ps -ef | grep user1)
或者
[root@zcwyou ~]# kill -u user1
6. 另一個工具killall命令,根據(jù)進(jìn)程名稱發(fā)送信號,而不是進(jìn)程號
以CentOS7.5為例,默認(rèn)情況并沒有安裝killall命令。
運行以下命令安裝軟件:
[root@zcwyou ~]# yum -y install psmisc
linux安裝killall命令
先查看正在運行的進(jìn)程
[root@zcwyou ~]# ps -ef
結(jié)束一個名為abc的進(jìn)程,默認(rèn)情況下使用SIGTERM命令。
[root@zcwyou ~]# killall abc
查看killall支持的信號
[root@zcwyou ~]# killall -l
HUP INT QUIT ILL TRAP ABRT IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS UNUSED
linux結(jié)束進(jìn)程命令killall支持的信號
注意:假如進(jìn)程的名字的長度小于等于15,默認(rèn)情況下就會以完整名稱匹配。
7. 還有一個pkill命令,也是根據(jù)進(jìn)程名稱發(fā)送信號,類似于killall
pkill選項
-o:僅向找到的最小(起始)進(jìn)程號發(fā)送信號;
-n:僅向找到的大(結(jié)束)進(jìn)程號發(fā)送信號;
-P:指定父進(jìn)程號發(fā)送信號;
-g:指定進(jìn)程組;
-t:指定開啟進(jìn)程的終端。
例子:
結(jié)束進(jìn)程abc
pkill abc
以CentOS7.5為例,默認(rèn)情況下,系統(tǒng)并沒有集成pkill命令。而是要自行安裝。
[root@zcwyou ~]# yum -y install procps-ng
Linux安裝pkill工具結(jié)束進(jìn)程
8. 總結(jié)
Linux下結(jié)束進(jìn)程的工具有很多,這里僅僅了解一些常用的命令。
當(dāng)前標(biāo)題:Linux系統(tǒng)結(jié)束進(jìn)程多種方法集合?
新聞來源:http://jinyejixie.com/news29/103229.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、品牌網(wǎng)站制作、軟件開發(fā)、網(wǎng)站策劃、微信公眾號、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容