Linux系統(tǒng)結(jié)束進(jìn)程多種方法集合?

2021-02-27    分類: 網(wǎng)站建設(shè)

1. 前言

我們經(jīng)常在Linux里使用kill命令來結(jié)束某后臺(tái)進(jìn)程。但kill命令實(shí)際上是向進(jìn)程發(fā)送信號(hào),并且有多種信號(hào)。終止運(yùn)行一個(gè)程序只是其中一個(gè)信號(hào)而已。kill是根據(jù)進(jìn)程號(hào)發(fā)送信號(hào)的,而另一個(gè)工具killall是根據(jù)進(jìn)程名稱發(fā)送信號(hào)的。

2. 查看kill支持的信號(hào)

[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選項(xiàng)

3. 結(jié)束進(jìn)程

普通用戶只能使用不帶signal參數(shù)的kill命令

一般情況下,最多使用-9信號(hào)。即強(qiáng)制結(jié)束某個(gè)進(jìn)程。

比如強(qiáng)制結(jié)束進(jìn)程號(hào)為123的進(jìn)程。

先確認(rèn)進(jìn)程號(hào):

[root@zcwyou ~]# top

linux查看進(jìn)程號(hào)

然后根據(jù)進(jìn)程號(hào)強(qiáng)制結(jié)束:

[root@zcwyou ~]# kill -9 123

默認(rèn)情況,kill使用信號(hào)15結(jié)束進(jìn)程,并且是安全的。而信號(hào) 9 則是處理異常進(jìn)程的,請(qǐng)勿濫用

4. kill其它常用信號(hào)

代號(hào)名稱內(nèi)容1SIGHUP啟動(dòng)被終止的程序,可讓該進(jìn)程重新讀取自己的配置文件,類似重新啟動(dòng)。2SIGINT相當(dāng)于用鍵盤輸入 [ctrl]-c 來中斷一個(gè)程序的進(jìn)行。9SIGKILL代表強(qiáng)制中斷一個(gè)程序的進(jìn)行,如果該程序進(jìn)行到一半,那么尚未完成的部分可能會(huì)有“半產(chǎn)品”產(chǎn)生,類似 vim會(huì)有 .filename.swp 保留下來。15SIGTERM以正常的方式來終止該程序。由于是正常的終止,所以后續(xù)的動(dòng)作會(huì)將他完成。不過,如果該程序已經(jīng)發(fā)生問題,就是無法使用正常的方法終止時(shí),輸入這個(gè) signal 也是沒有用的。19SIGSTOP相當(dāng)于用鍵盤輸入 [ctrl]-z 來暫停一個(gè)程序的進(jìn)行。

5. 殺死用戶user1的所有進(jìn)程

[root@zcwyou ~]# kill -9 $(ps -ef | grep user1)

或者

[root@zcwyou ~]# kill -u user1

6. 另一個(gè)工具killall命令,根據(jù)進(jìn)程名稱發(fā)送信號(hào),而不是進(jìn)程號(hào)

以CentOS7.5為例,默認(rèn)情況并沒有安裝killall命令。

運(yùn)行以下命令安裝軟件:

[root@zcwyou ~]# yum -y install psmisc

linux安裝killall命令

先查看正在運(yùn)行的進(jìn)程

[root@zcwyou ~]# ps -ef 

結(jié)束一個(gè)名為abc的進(jìn)程,默認(rèn)情況下使用SIGTERM命令。

[root@zcwyou ~]# killall abc

查看killall支持的信號(hào)

[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支持的信號(hào)

注意:假如進(jìn)程的名字的長(zhǎng)度小于等于15,默認(rèn)情況下就會(huì)以完整名稱匹配。

7. 還有一個(gè)pkill命令,也是根據(jù)進(jìn)程名稱發(fā)送信號(hào),類似于killall

pkill選項(xiàng)

-o:僅向找到的最小(起始)進(jìn)程號(hào)發(fā)送信號(hào);

-n:僅向找到的大(結(jié)束)進(jìn)程號(hào)發(fā)送信號(hào);

-P:指定父進(jìn)程號(hào)發(fā)送信號(hào);

-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)程的工具有很多,這里僅僅了解一些常用的命令。

文章題目:Linux系統(tǒng)結(jié)束進(jìn)程多種方法集合?
標(biāo)題來源:http://muchs.cn/news/103229.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)網(wǎng)站排名、搜索引擎優(yōu)化企業(yè)網(wǎng)站制作、軟件開發(fā)、品牌網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)