trap 信號說明,對照表,實例
# 1. 信號說明
信號組合鍵:
Ctrl+C # 組合鍵會產生SIGINT信號
Ctrl+Z # 產生SIGTSTP信號。
trap 說明:
trap命令允許你來指定shell腳本要監視並攔截的Linux信號。trap命令的格式為:trap commands signals。
# 1. 信號對照表; trap -l tarp [træp] 圈套
名稱 默認動作 說明
SIGHUP 終止進程 終端線路掛斷
SIGINT 終止進程 中斷進程
SIGQUIT 建立CORE文件 終止進程,並且生成core文件
SIGILL 建立CORE文件 非法指令
SIGTRAP 建立CORE文件 跟蹤自陷
SIGBUS 建立CORE文件 總線錯誤
SIGSEGV 建立CORE文件 段非法錯誤
SIGFPE 建立CORE文件 浮點異常
SIGIOT 建立CORE文件 執行I/O自陷
SIGKILL 終止進程 殺死進程
SIGPIPE 終止進程 向一個沒有讀進程的管道寫數據
SIGALARM 終止進程 計時器到時
SIGTERM 終止進程 軟件終止信號
SIGSTOP 停止進程 非終端來的停止信號
SIGTSTP 停止進程 終端來的停止信號
SIGCONT 忽略信號 繼續執行一個停止的進程
SIGURG 忽略信號 I/O緊急信號
SIGIO 忽略信號 描述符上可以進行I/O
SIGCHLD 忽略信號 當子進程停止或退出時通知父進程
SIGTTOU 停止進程 後臺進程寫終端
SIGTTIN 停止進程 後臺進程讀終端
SIGXGPU 終止進程 CPU時限超時
SIGXFSZ 終止進程 文件長度過長
SIGWINCH 忽略信號 窗口大小發生變化
SIGPROF 終止進程 統計分佈圖用計時器到時
SIGUSR1 終止進程 用戶定義信號1
SIGUSR2 終止進程 用戶定義信號2
SIGVTALRM 終止進程 虛擬計時器到時
# 2. 實例
!/bin/bash
trap "
echo 'SIGINT信號代碼對應:Ctrl-C 退出; trap 是接收命令,句末對應信號代碼為:SIGINT,當輸入這個信號時,返回指定規則; 此處為打印一句話 '
" SIGINT # 此次是再腳本運行中獲取信號
echo "這是一個循環"
i=1 # 初始化變量,初始值為 1
for((i=1;i<=12;i++)) # 定義一個循環,屬性為 i 進行約束。
do # 開始循環方法:
sleep 1 # 等待1秒鐘 ,才執行下面的命令
echo "開始數數:" $i
done # 結束循環
echo "輸入 Ctrl-C 信號,執行的命令已經變更,轉交給下面的規則來執行"
trap "echo 'SIGINT 的信號值已被修改:打印命令已變更'" SIGINT
# 修改trap
a=1
while [ $a -le 5 ] # while 循環,變量 a 小於 5
do
echo "開始數數: $a"
sleep 1
a=$[ $a+ 1 ] # a 的值為它本身加 1
done
trap "echo '腳本結束後繼續定義命令並執行,此處為打印一句話和時間命令' ; date" EXIT
# 腳本結束獲取命令的參數 EXIT
echo "循環結束"