開發與維運

Linux Trap 命令

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

Leave a Reply

Your email address will not be published. Required fields are marked *