標籤:bash 訊號
bash處理訊號
發送訊號
kill
格式:kill[-s sigspec | -n signum | -sigspec] [pid | jobspec] ...
可以發送進程號為pid的進程,也可以發送作業號為jobspec的進程
sigspec可以是訊號數字也可以是訊號名,訊號名可以不帶SIG
kill命令預設發送SIGTERM訊號,接收到SIGTERM訊號的進程會結束運行
終端中,Ctrl+C給前台進程發送INT訊號,進程退出,退出狀態為130,為訊號編號加128
處理訊號
建立訊號回呼函數
trapcmd signal1 signal2 signal3 ...
cmd可以是一系列命令或一個函數的名字,也可以為空白,將執行預設行為
Shell指令碼編程感興趣的訊號
訊號 |
對應ID |
行為 |
含義 |
SIGHUP |
1 |
Term |
Hangupdetected on controlling terminal |
SIGINT |
2 |
Term |
Interruptfrom keyboard |
SIGQUIT |
3 |
Core |
Quitfrom keyboard |
SIGKILL |
9 |
Term |
Killsignal |
SIGALRM |
14 |
Term |
Timersignal |
SIGTERM |
15 |
Term |
Terminationsignal |
Shell指令碼有個假的訊號0,在退出時產生,可以為這個訊號定義函數使指令碼結束時執行某些操作
多次為同一個訊號定義操作,以最後一次為準
忽略訊號
在trap中使用Null 字元串或冒號就行。
trap‘ ‘ 2//注意引號的存在
設定定時器
其實就是設定一個背景子進程在睡眠一定事件後給本進程發送SIGALARM訊號。
方式:sleep$time && kill -s 14 $$ &
此命令產生bash子進程後,由bash子進程產生sleep進程。
在登出定時器時注意殺死進程的順序,貿然殺了父進程,就找不到子進程了哦
本文出自 “重劍無鋒” 部落格,請務必保留此出處http://qianyang.blog.51cto.com/7130735/1620558
bash訊號處理