天天看點

shell程式設計(二十一)trap捕捉信号

一    小故事

家裡有老鼠,快消滅它!哎,又給跑了.老鼠這小東西跑那麼快,想直接消滅它還真不那麼容易.于是'老鼠藥'、'老鼠夾子'或'老鼠籠'就派上用場了,它們'都是陷阱',放在那靜靜地'等待着'老鼠的光顧。

在'shell中',也可以捉"老鼠",捉到"老鼠"後,可以無視它、殺死它或者抓起來逗一番。隻需使用内置指令trap'中文就翻譯為陷阱、圈套'就可以布置一個陷阱,這個陷阱當然不是捕老鼠的,而是'捕捉信号'
           

二   trap的兩個核心功能

通常trap都在'腳本中使用',主要有2種功能

(1)'忽略信号';當運作中的腳本程序接收到某信号時(例如誤按了CTRL+C),可以将其忽略,免得腳本執行到一半就被終止('屏蔽使用者非法輸入的信号')

要點:'防止意外手動中斷shell腳本的執行'

(2)'捕捉到信号後做相應處理',主要是清理一些'腳本建立的臨時檔案',然後退出
           

三    信号的常見說明

Signal     Value     Comment
─────────────────────────────
SIGHUP        1      '挂起程序',特别是'終端掉線或者使用者退出時',此終端内的程序都将被終止
SIGINT        2      '中斷程序',幾乎等同于SIGTERM(15),會盡可能的釋放執行clean-up,釋放資源