書-Linux命令行與shell腳本編程大全(第3版)

image

●處理信號

○生成訊號

●捕獲信號

○捕獲信號-退出

●捕獲信號-修改、移除

處理信號

目前控制腳本就只能在命令列中,但是也可以用訊號的方式去控制腳本停止、啟動、終止。

Linux總共有30種訊號,但是下面只會列出常見的訊號。

image

生成訊號

1.中斷進程

原本要等100秒,但是按下Ctrl + C之後會生成'SIGINT'訊號給當前在shell中所有進程。

按鍵: Ctrl + C

image

2.暫停進程(之後講播放)

就跟播影片一樣按下暫停之後還可以播放,按下entry後就會傳送'SIGSTOP'訊號暫停。

按鍵: Ctrl + Z

image

可以查看目前進程有那些東西在運行,第二行顯示T要麼被追蹤,暫停。

指令: ps -l

image

你要離開他還會提醒你,輸入兩次就可以離開,但是我們可以用kill的方式來殺掉進程。

指令: exit

image

輸入進程的PID就可以殺掉了,當我們按下entry就會發送'SIGKILL'信號終止。

指令: kill -9 1977

image

捕獲信號

只要trap就可捕獲到你所要捕獲的訊號。

image

在程式結束前,只要我按下Ctril +C就會執行trap那一行。

image

每次使用Ctrl + C都會執行trap中echo語句,而不是終止該腳本。

image

捕獲信號-退出

程式執行完,或是終止腳本都會觸發。

image

等他執行完捕獲到EXIT,雖說按下Ctrl + C會傳送SIGINT,但是退出前還是捕獲到EXIT。

image

捕獲信號-修改、移除

這個腳本就是會依據最新的trap中echo語句。

image

更改所輸出echo可以再打一次trap。

image

加上破折號可以讓SIGINT恢復預設動作。

image

可以看到第二次迴圈按下Ctrl + C就離開了。

image

arrow
arrow
    創作者介紹
    創作者 讀書小天地 的頭像
    讀書小天地

    書籍分享天地

    讀書小天地 發表在 痞客邦 留言(0) 人氣()