溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Linux Shell的信號(hào)trap功能細(xì)節(jié)有哪些

發(fā)布時(shí)間:2021-11-05 16:03:57 來(lái)源:億速云 閱讀:153 作者:柒染 欄目:建站服務(wù)器

這篇文章給大家介紹Linux Shell的信號(hào)trap功能細(xì)節(jié)有哪些,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

它有三種形式分別對(duì)應(yīng)三種不同的信號(hào)回應(yīng)方式.

第一種:  trap 'commands' signal-list       當(dāng)腳本收到signal-list清單內(nèi)列出的信號(hào)時(shí),trap命令執(zhí)行雙引號(hào)中的命令.

第二種:  trap signal-list trap              不指定任何命令,接受信號(hào)的默認(rèn)操作.默認(rèn)操作是結(jié)束進(jìn)程的運(yùn)行.

第三種:  trap ' ' signal-list trap          命令指定一個(gè)空命令串,允許忽視信號(hào).

NOTE:trap 對(duì)同種signal只能相應(yīng)一種設(shè)定,如果在一個(gè)shell里面設(shè)置多個(gè)trap,那么它只會(huì)響應(yīng)最后一個(gè)信號(hào)設(shè)定。

如: trap   ' echo “aaaaaaaaaaa”  '  INT

        trap   ' echo “bbbbbbbbbbb”  '  INT

那么它只會(huì)響應(yīng)最后一個(gè)信號(hào)設(shè)定。

如下X/Open規(guī)范里面規(guī)定的能夠被捕獲的比較重要的一些信號(hào)(括號(hào)里面的數(shù)字是傳統(tǒng)的信號(hào)編號(hào))

trap命令常見(jiàn)的用途在于腳本程序中斷時(shí)完成清理工作,比如臨時(shí)文件等.

Linux Shell的信號(hào)trap功能細(xì)節(jié)有哪些

trap命令舉例

eg 1:

[root@xyhl ~]# trap "echo aaaaaa" 2
[root@xyhl ~]# ^Caaaaaa   ==》執(zhí)行ctrl+c,捕獲到信號(hào)2,將執(zhí)行打印

eg 2:    如果遇到INT中斷,即Ctrl+c,即刪除該文件

#!/bin/bash

trap 'rm -f /tmp/my_tmp_file_$$' INT

echo "creating file /tmp/my_tmp_file_$$"

date > /tmp/my_tmp_file_$$

echo "press interrupt (CTRL-C) to interrupt ......"

while [ -f /tmp/my_tmp_file_$$ ];

do       echo "File exists"      

           sleep 3

done

echo" we never get here" exit 0

關(guān)于Linux Shell的信號(hào)trap功能細(xì)節(jié)有哪些就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI