天天看點

Linux Trap 指令!/bin/bash

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

繼續閱讀