shell信號捕捉命令 trap

trap 命令

tarp命令用於在接收到指定信號後要執行的動做,一般用途是在shell腳本被中斷時完成清理工做。例如:
腳本在執行時按下CTRL+c時,將顯示"program exit..."並退出(CTRL+c的信號是SIGINT)linux

#!/bin/bash
trap "ehco 'program exit...'; exit 2" SIGINT

....

信號

經常使用信號shell

信號名稱 信號數 描述
SIGINT 2 程序終止(interrupt)信號, 在用戶鍵入INTR字符(一般是Ctrl+C)時發出。
SIGQUIT 3 和SIGINT相似, 但由QUIT字符(一般是Ctrl /)來控制. 進程在因收到SIGQUIT退出時會產生core文件, 在這個意義上相似於一個程序錯誤信號。
SIGFPE 8 在發生致命的算術運算錯誤時發出. 不只包括浮點運算錯誤, 還包括溢出及除數爲0等其它全部的算術的錯誤。
SIGKILL 9 用來當即結束程序的運行. 本信號不能被阻塞, 處理和忽略。
SIGALRM 14 時鐘定時信號, 計算的是實際的時間或時鐘時間. alarm函數使用該信號。 SIGTERM

捕獲信號

  • trap的命令語法:bash

    trap command signal

    這裏的command能夠是linux命令,或用戶定義的函數。signal信號名稱信號數,能夠指定多個信號,以空格相隔。函數

  • trap在shell常見用途code

    • 腳本退出前執行命令

    腳本在執行時按下CTRL+c時,將顯示"program exit..."並退出(CTRL+c的信號是SIGINT)
    shell trap "ehco 'program exit...'; exit 2" SIGINT進程

    • 忽略信號

    例:腳本運行時忽略 SIGINT SIGQUIT SIGFPE等信號
    shell trap '' 2 3 8it

相關文章
相關標籤/搜索