1.命令簡介
trap 命令是 Shell 內建命令,用于指定在接收到信號后將要采取的動作。常見的用途是在腳本程序被中斷時完成清理工作。
2.命令格式
trap[-lp][ARG][SIGSPECS]
3.選項說明
-l
列出信號名稱與對應的數值
-p
列出信號與其綁定的命令列表
ARG
與指定信號綁定的命令。如果 ARG 為空字符串,表示忽略信號;如果 ARG 不指定(缺省)或為-,表示執行信號的默認動作
SIGSPECS
信號列表,可以是信號名稱,也可以是信號對應的數值。可用信號可以使用trap-l查看
4.常用示例
(1)忽略 HUP、INT、QUIT、TSTP 信號。
trap""HUPINTQUITTSTP
(2)捕獲 HUP、INT、QUIT、TSTP 信號,并執行默認動作。
trapHUPINTQUITTSTP
#或
trap-HUPINTQUITTSTP
(3)掛載 Shell 進程結束前需要執行的命令。格式為:trap “commands” EXIT。如腳本 exit.sh:
#!/bin/bash
echo"start"
trap"echo'end'"EXIT
echo"beforeexit"
exit0
執行 exit.sh 輸出:
start
beforeexit
end
5.信號簡介
信號是一種進程間通信機制,它給應用程序提供一種異步的軟件中斷,使應用程序有機會接受其他程序發送的命令(即信號)。應用程序收到信號后,有三種處理方式:忽略、默認或捕捉。進程收到一個信號后,會檢查對該信號的處理機制。如果是 SIG_IGN,就忽略該信號;如果是 SIG_DFT,則會采用系統默認的處理動作,通常是終止進程或忽略該信號;如果給該信號指定了一個處理函數,則會中斷當前進程正在執行的任務,轉而去執行該信號的處理函數,返回后再繼續執行被中斷的任務。
在有些情況下,我們不希望自己的 Shell 腳本在運行時被中斷,比如說我們寫的 Shell 腳本設為某一用戶登錄系統后默認執行的 Shell 腳本,使這一用戶進入系統后只能做某一項工作,如數據庫備份, 我們不希望用戶使用 Ctrl+C 發送 SIGINT 信號來中斷當前 Shell 腳本的執行,進入到 Shell 交互模式,做我們不希望做的事情。這便用到了信號處理。
以下是一些你可能會遇到的,要在程序中使用的常見的信號:
(點擊查看大圖)
詳細的信號列表,可以使用命令trap -l
或kill -l
查看,也可以查看頭文件trap -l
,查看系統支持的所有信號如下:
1)SIGHUP2)SIGINT3)SIGQUIT4)SIGILL5)SIGTRAP
6)SIGABRT7)SIGBUS8)SIGFPE9)SIGKILL10)SIGUSR1
11)SIGSEGV12)SIGUSR213)SIGPIPE14)SIGALRM15)SIGTERM
16)SIGSTKFLT17)SIGCHLD18)SIGCONT19)SIGSTOP20)SIGTSTP
21)SIGTTIN22)SIGTTOU23)SIGURG24)SIGXCPU25)SIGXFSZ
26)SIGVTALRM27)SIGPROF28)SIGWINCH29)SIGIO30)SIGPWR
31)SIGSYS34)SIGRTMIN35)SIGRTMIN+136)SIGRTMIN+237)SIGRTMIN+3
38)SIGRTMIN+439)SIGRTMIN+540)SIGRTMIN+641)SIGRTMIN+742)SIGRTMIN+8
43)SIGRTMIN+944)SIGRTMIN+1045)SIGRTMIN+1146)SIGRTMIN+1247)SIGRTMIN+13
48)SIGRTMIN+1449)SIGRTMIN+1550)SIGRTMAX-1451)SIGRTMAX-1352)SIGRTMAX-12
53)SIGRTMAX-1154)SIGRTMAX-1055)SIGRTMAX-956)SIGRTMAX-857)SIGRTMAX-7
58)SIGRTMAX-659)SIGRTMAX-560)SIGRTMAX-461)SIGRTMAX-362)SIGRTMAX-2
63)SIGRTMAX-164)SIGRTMAX
參考文獻
[1] trap manual
[2] Linux命令大全.trap命令
[3] linux中的trap命令
責任編輯:xj
原文標題:每天一個 Linux 命令(108):trap 命令
文章出處:【微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。
-
Linux
+關注
關注
87文章
11319瀏覽量
209832 -
命令
+關注
關注
5文章
687瀏覽量
22055
原文標題:每天一個 Linux 命令(108):trap 命令
文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論