一 小故事
家裡有老鼠,快消滅它!哎,又給跑了.老鼠這小東西跑那麼快,想直接消滅它還真不那麼容易.于是'老鼠藥'、'老鼠夾子'或'老鼠籠'就派上用場了,它們'都是陷阱',放在那靜靜地'等待着'老鼠的光顧。
在'shell中',也可以捉"老鼠",捉到"老鼠"後,可以無視它、殺死它或者抓起來逗一番。隻需使用内置指令trap'中文就翻譯為陷阱、圈套'就可以布置一個陷阱,這個陷阱當然不是捕老鼠的,而是'捕捉信号'
二 trap的兩個核心功能
通常trap都在'腳本中使用',主要有2種功能
(1)'忽略信号';當運作中的腳本程序接收到某信号時(例如誤按了CTRL+C),可以将其忽略,免得腳本執行到一半就被終止('屏蔽使用者非法輸入的信号')
要點:'防止意外手動中斷shell腳本的執行'
(2)'捕捉到信号後做相應處理',主要是清理一些'腳本建立的臨時檔案',然後退出
三 信号的常見說明
Signal Value Comment
─────────────────────────────
SIGHUP 1 '挂起程序',特别是'終端掉線或者使用者退出時',此終端内的程序都将被終止
SIGINT 2 '中斷程序',幾乎等同于SIGTERM(15),會盡可能的釋放執行clean-up,釋放資源