bash訊號處理

來源:互聯網
上載者:User

標籤:bash   訊號   

bash處理訊號

發送訊號

kill

格式:kill[-s sigspec | -n signum | -sigspec] [pid | jobspec] ...

可以發送進程號為pid的進程,也可以發送作業號為jobspec的進程

sigspec可以是訊號數字也可以是訊號名,訊號名可以不帶SIG

kill命令預設發送SIGTERM訊號,接收到SIGTERM訊號的進程會結束運行

終端中,Ctrl+C給前台進程發送INT訊號,進程退出,退出狀態為130,為訊號編號加128


處理訊號

建立訊號回呼函數

trapcmd signal1 signal2 signal3 ...

cmd可以是一系列命令或一個函數的名字,也可以為空白,將執行預設行為


Shell指令碼編程感興趣的訊號

訊號

對應ID

行為

含義

SIGHUP

1

Term

Hangupdetected on controlling terminal

SIGINT

2

Term

Interruptfrom keyboard

SIGQUIT

3

Core

Quitfrom keyboard

SIGKILL

9

Term

Killsignal

SIGALRM

14

Term

Timersignal

SIGTERM

15

Term

Terminationsignal


Shell指令碼有個假的訊號0,在退出時產生,可以為這個訊號定義函數使指令碼結束時執行某些操作


多次為同一個訊號定義操作,以最後一次為準


忽略訊號

在trap中使用Null 字元串或冒號就行。

trap‘ ‘ 2//注意引號的存在


設定定時器

其實就是設定一個背景子進程在睡眠一定事件後給本進程發送SIGALARM訊號。

方式:sleep$time && kill -s 14 $$ &

此命令產生bash子進程後,由bash子進程產生sleep進程。

在登出定時器時注意殺死進程的順序,貿然殺了父進程,就找不到子進程了哦


本文出自 “重劍無鋒” 部落格,請務必保留此出處http://qianyang.blog.51cto.com/7130735/1620558

bash訊號處理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.