我們可以使用 kill PID 殺死一個程序,或者使用 kill -9 PID 強制殺死一個程序。
記得以前在研究所學生的時候師弟和師妹經常問我,kill -9 裡面的 -9 是什麼意思,我告訴他們,這是強制殺死程序的意思,讓這個程序“九死一生”。當然這是開玩笑,這裡的 -9 是信号的一種,kill 指令會向程序發送一個信号,-9代表 SIGKILL 之意,用于強制終止某個程序,當然這是一種無情地,野蠻地方式幹掉程序。
我們可以通過 kill -l 指令檢視到所有的信号
HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH POLL PWR SYS
上面的信号是有順序的,比如第1個是 HUP,第9個是 KILL,下面兩種方式是等價的:
kill -1 PID 和 kill -HUP PID
kill -9 PID 和 kill -KILL PID
信号HUP通常程式用這個信号進行優雅重載配置檔案,重新啟動并且不影響正在運作的服務。比如
pkill -1 uwsgi 優雅重新開機uwsgi 程序,對伺服器沒有影響
kill -1 NGINX_PID 優雅重新開機nginx程序,對伺服器沒有影響
除了知道可以這麼使用之外,感興趣的讀者還可以自行學習,深入了解下uwsgi和nginx無損reload的機制。
我們常用CTRL+C中斷一個指令的執行,其實就是發送了一個信号到該程序
CTRL-C 發送 SIGINT 信号給前台程序組中的所有程序,常用于終止正在運作的程式。
CTRL-Z 發送 SIGTSTP 信号給前台程序組中的所有程序,常用于挂起一個程序。
每個程式可能對部分信号的功能定義不一緻,其它信号的含義大家可以自行學習。
轉載于:https://www.cnblogs.com/Paul-watermelon/p/10407502.html