Linux Shell的訊號trap功能細節
它有三種形式分別對應三種不同的訊號回應方式.
第一種:
trap 'commands' signal-list 當指令碼收到signal-list清單內列出的訊號時,trap命令執行雙引號中的命令.
第二種:
trap signal-list
trap 不指定任何命令,接受訊號的預設操作.預設操作是結束程式的執行.
第三種:
trap ' ' signal-list
trap 命令指定一個空命令串,允許忽視訊號.
NOTE:trap 對同種signal只能相應一種設定,如果在一個shell裡面設定多個trap,那麼它只會響應最後一個訊號設定。
如:
trap ' echo “aaaaaaaaaaa” ' INT
trap ' echo “bbbbbbbbbbb” ' INT
那麼它只會響應最後一個訊號設定。
如下X/Open規範裡面規定的能夠被捕獲的比較重要的一些訊號(括號裡面的數字是傳統的訊號編號)
trap命令常見的用途在於指令碼程式中斷時完成清理工作,比如臨時檔案等.
trap命令舉例
eg 1:
[root@xyhl ~]# trap "echo aaaaaa" 2
[root@xyhl ~]# ^Caaaaaa ==》執行ctrl+c,捕獲到訊號2,將執行列印
eg 2: 如果遇到INT中斷,即Ctrl+c,即刪除該檔案
#!/bin/bash
trap 'rm -f /tmp/my_tmp_file_$$' INT
echo "creating file /tmp/my_tmp_file_$$"
date > /tmp/my_tmp_file_$$
echo "press interrupt (CTRL-C) to interrupt ......"
while [ -f /tmp/my_tmp_file_$$ ];
do
echo "File exists"
sleep 3
done
echo" we never get here"
exit 0
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27785870/viewspace-2214730/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 關於Linux Shell的訊號trap功能你必須知道的細節Linux
- shell訊號捕捉命令 trap
- linux系統指令碼中trap訊號都有哪些?Linux運維Linux指令碼運維
- 使用命令trap來捕捉訊號(轉)
- 我使用過的Linux命令之trap - 在指令碼中處理訊號Linux指令碼
- 細說 ReactiveCocoa 的冷訊號與熱訊號(1)React
- 在shell中捕捉訊號的命令(轉)
- 細說 ReactiveCocoa 的冷訊號與熱訊號(三):怎麼處理冷訊號與熱訊號React
- Linux Shell 中的反引號,單引號,雙引號Linux
- 深度解密HTTP通訊細節解密HTTP
- A20 Linux 配置細節Linux
- Linux訊號機制與訊號處理Linux
- Linux Shell 單引號 雙引號 使用區別Linux
- linux中的兩個非常重要的訊號:SIGALRM訊號和SIGCHID訊號LinuxGC
- Linux下訊號燈的使用Linux
- Linux 未決訊號集與訊號遮蔽字Linux
- Linux Shell 雙括號運算子使用Linux
- 細說 ReactiveCocoa 的冷訊號與熱訊號(2):為什麼要區分React
- linux 訊號機制Linux
- Linux 訊號量大全Linux
- linux訊號表(轉)Linux
- 【Linux】關於Linux的部分細節與配置檔案Linux
- Linux中訊號量的實現Linux
- Linux中的System V訊號量Linux
- linux訊號的阻塞和未決Linux
- linux 下的訊號量引數Linux
- linux 訊號與處理Linux
- Linux訊號簡介(轉)Linux
- Linux程式間通訊——使用訊號量Linux
- linux程式間通訊-----訊號總結Linux
- Linux 下的程式間通訊:套接字和訊號Linux
- shell中的特殊符號符號
- Linux Shell中各種括號用法總結!Linux
- linux中的訊號處理與SROPLinux
- Linux的kill命令與訊號控制(轉)Linux
- Windows下程式向Linux下移植細節WindowsLinux
- 運維中資料泵匯出常用的細節小功能兩例運維
- 《Linux/Unix 設計思想》的翻譯細節討論Linux