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 "循環結束"