
linux利用信号與運作在系統中的程序進行通信。可以通過對腳本進行程式設計,使其在收到特定信号時執行某些指令,進而控制shell腳本的操作。
linux系統信号有30多個,下表中列出來最常見的幾個linux系統信号
信号 | 值 | 描述 |
---|---|---|
1 | SIGHUP | 挂起程序 |
2 | SIGINT | 終止程序 |
3 | SIGQUIT | 停止程序 |
9 | SIGKILL | 無條件終止程序 |
15 | SIGTERM | 盡可能的終止程序 |
17 | SIGSTOP | 無條件的停止程序,但不是終止程序 |
18 | SIGSTP | 停止或暫停程序,但不終止程序 |
19 | SIGCONT | 繼續運作停止的程序 |
生成信号
bash shell允許用鍵盤上的組合鍵生成兩種基本的linux信号。這種特性在需要停止或暫停失控程式時非常友善。
1.中斷程序
Ctrl+C組合鍵會生成SIGINT信号,并将其發送給目前在shell中運作的所有程序。
示範代碼如下:
2.暫停程序
Ctrl+Z組合鍵會生成一個SIGTSTP信号,停止shell中運作的任何程式,停止程序和終止程序不同,停止程序會讓程式繼續保留在記憶體中,并能從上次停止的位置繼續運作。
示範代碼如下:
方括号中的[1]是shell配置設定的作業号,shell将運作的每一個程序稱為作業,并為每一個作業配置設定唯一的作業号。它會為第一個作業配置設定作業号1,第二個作業配置設定作業号2,以此類推。
可以通過ps -l指令檢視已經停止的作業,在S列中,ps指令将已經停止的作業的狀态顯示為T。
如果在已經有停止作業的狀态下,仍舊想退出shell,可以使用kill指令來發送一個SIGKILL信号來終止它。
示範代碼如下: