0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Shell內(nèi)建命令:trap命令

Linux愛好者 ? 來源:Linux愛好者 ? 作者:戀貓大鯉魚 ? 2021-02-09 18:19 ? 次閱讀

1.命令簡(jiǎn)介

trap 命令是 Shell 內(nèi)建命令,用于指定在接收到信號(hào)后將要采取的動(dòng)作。常見的用途是在腳本程序被中斷時(shí)完成清理工作。

2.命令格式

trap[-lp][ARG][SIGSPECS]

3.選項(xiàng)說明

-l
列出信號(hào)名稱與對(duì)應(yīng)的數(shù)值
-p
列出信號(hào)與其綁定的命令列表
ARG
與指定信號(hào)綁定的命令。如果 ARG 為空字符串,表示忽略信號(hào);如果 ARG 不指定(缺?。┗?yàn)?,表示執(zhí)行信號(hào)的默認(rèn)動(dòng)作
SIGSPECS
信號(hào)列表,可以是信號(hào)名稱,也可以是信號(hào)對(duì)應(yīng)的數(shù)值。可用信號(hào)可以使用trap-l查看

4.常用示例

(1)忽略 HUP、INT、QUIT、TSTP 信號(hào)。

trap""HUPINTQUITTSTP

(2)捕獲 HUP、INT、QUIT、TSTP 信號(hào),并執(zhí)行默認(rèn)動(dòng)作。

trapHUPINTQUITTSTP
#或
trap-HUPINTQUITTSTP

(3)掛載 Shell 進(jìn)程結(jié)束前需要執(zhí)行的命令。格式為:trap “commands” EXIT。如腳本 exit.sh:

#!/bin/bash

echo"start"
trap"echo'end'"EXIT
echo"beforeexit"
exit0

執(zhí)行 exit.sh 輸出:

start
beforeexit
end

5.信號(hào)簡(jiǎn)介

信號(hào)是一種進(jìn)程間通信機(jī)制,它給應(yīng)用程序提供一種異步的軟件中斷,使應(yīng)用程序有機(jī)會(huì)接受其他程序發(fā)送的命令(即信號(hào))。應(yīng)用程序收到信號(hào)后,有三種處理方式:忽略、默認(rèn)或捕捉。進(jìn)程收到一個(gè)信號(hào)后,會(huì)檢查對(duì)該信號(hào)的處理機(jī)制。如果是 SIG_IGN,就忽略該信號(hào);如果是 SIG_DFT,則會(huì)采用系統(tǒng)默認(rèn)的處理動(dòng)作,通常是終止進(jìn)程或忽略該信號(hào);如果給該信號(hào)指定了一個(gè)處理函數(shù),則會(huì)中斷當(dāng)前進(jìn)程正在執(zhí)行的任務(wù),轉(zhuǎn)而去執(zhí)行該信號(hào)的處理函數(shù),返回后再繼續(xù)執(zhí)行被中斷的任務(wù)。

在有些情況下,我們不希望自己的 Shell 腳本在運(yùn)行時(shí)被中斷,比如說我們寫的 Shell 腳本設(shè)為某一用戶登錄系統(tǒng)后默認(rèn)執(zhí)行的 Shell 腳本,使這一用戶進(jìn)入系統(tǒng)后只能做某一項(xiàng)工作,如數(shù)據(jù)庫備份, 我們不希望用戶使用 Ctrl+C 發(fā)送 SIGINT 信號(hào)來中斷當(dāng)前 Shell 腳本的執(zhí)行,進(jìn)入到 Shell 交互模式,做我們不希望做的事情。這便用到了信號(hào)處理。

以下是一些你可能會(huì)遇到的,要在程序中使用的常見的信號(hào):

a58d7252-61ff-11eb-8b86-12bb97331649.png

(點(diǎn)擊查看大圖)

詳細(xì)的信號(hào)列表,可以使用命令trap -lkill -l查看,也可以查看頭文件。例如,執(zhí)行trap -l,查看系統(tǒng)支持的所有信號(hào)如下:

1)SIGHUP2)SIGINT3)SIGQUIT4)SIGILL5)SIGTRAP
6)SIGABRT7)SIGBUS8)SIGFPE9)SIGKILL10)SIGUSR1
11)SIGSEGV12)SIGUSR213)SIGPIPE14)SIGALRM15)SIGTERM
16)SIGSTKFLT17)SIGCHLD18)SIGCONT19)SIGSTOP20)SIGTSTP
21)SIGTTIN22)SIGTTOU23)SIGURG24)SIGXCPU25)SIGXFSZ
26)SIGVTALRM27)SIGPROF28)SIGWINCH29)SIGIO30)SIGPWR
31)SIGSYS34)SIGRTMIN35)SIGRTMIN+136)SIGRTMIN+237)SIGRTMIN+3
38)SIGRTMIN+439)SIGRTMIN+540)SIGRTMIN+641)SIGRTMIN+742)SIGRTMIN+8
43)SIGRTMIN+944)SIGRTMIN+1045)SIGRTMIN+1146)SIGRTMIN+1247)SIGRTMIN+13
48)SIGRTMIN+1449)SIGRTMIN+1550)SIGRTMAX-1451)SIGRTMAX-1352)SIGRTMAX-12
53)SIGRTMAX-1154)SIGRTMAX-1055)SIGRTMAX-956)SIGRTMAX-857)SIGRTMAX-7
58)SIGRTMAX-659)SIGRTMAX-560)SIGRTMAX-461)SIGRTMAX-362)SIGRTMAX-2
63)SIGRTMAX-164)SIGRTMAX

參考文獻(xiàn)

[1] trap manual
[2] Linux命令大全.trap命令
[3] linux中的trap命令

責(zé)任編輯:xj

原文標(biāo)題:每天一個(gè) Linux 命令(108):trap 命令

文章出處:【微信公眾號(hào):Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11314

    瀏覽量

    209807
  • 命令
    +關(guān)注

    關(guān)注

    5

    文章

    687

    瀏覽量

    22053

原文標(biāo)題:每天一個(gè) Linux 命令(108):trap 命令

文章出處:【微信號(hào):LinuxHub,微信公眾號(hào):Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux系統(tǒng)中shell命令解析

    shell是Linux系統(tǒng)的用戶界面,提供了用戶與內(nèi)核交互的一種接口,它接收用戶輸入的命令并到送到內(nèi)核去執(zhí)行,因此也被稱為L(zhǎng)inux的命令解釋器。
    的頭像 發(fā)表于 11-05 15:40 ?291次閱讀

    Linux實(shí)用命令大全

    Linux實(shí)用命令大全
    的頭像 發(fā)表于 10-23 13:50 ?246次閱讀
    Linux實(shí)用<b class='flag-5'>命令</b>大全

    SD的命令和響應(yīng)

    一個(gè)完整的?SD?卡操作過程是:主機(jī)(單片機(jī)等)發(fā)起“命令”,SD?卡根據(jù)命令的內(nèi)容決定是 否發(fā)送響應(yīng)信息及數(shù)據(jù)等,如果是數(shù)據(jù)讀/寫操作,主機(jī)還需要發(fā)送停止讀/寫數(shù)據(jù)的命令來結(jié)束 本次操作,這意味著主機(jī)發(fā)起
    的頭像 發(fā)表于 10-08 15:49 ?563次閱讀
    SD的<b class='flag-5'>命令</b>和響應(yīng)

    shell具有的功能和特點(diǎn)

    Shell 是一個(gè)命令行解釋器,用于與操作系統(tǒng)進(jìn)行交互。它提供了一種方便的方式來執(zhí)行命令、管理文件和目錄、運(yùn)行程序等。以下是 Shell 的功能和特點(diǎn)的介紹:
    的頭像 發(fā)表于 08-30 14:48 ?572次閱讀

    嵌入式學(xué)習(xí)-常見的shell命令之其他命令

    1、clear清屏命令命令:clear功能:清除屏幕參數(shù):無 示例:清屏前。執(zhí)行清屏命令后,終端界面顯示信息被清除。2、man幫助命令命令
    發(fā)表于 08-22 09:42

    常見的shell命令之其他命令

    1、clear清屏命令命令:clear功能:清除屏幕參數(shù):無 示例:清屏前。執(zhí)行清屏命令后,終端界面顯示信息被清除。2、man幫助命令命令
    發(fā)表于 08-21 09:49

    常見的shell命令之目錄相關(guān)命令

    1、pwd查看當(dāng)前目錄命令:pwd英文全拼:print work directory功能:打印當(dāng)前所在的路徑參數(shù):沒有其他參數(shù)示例:2、ls查看當(dāng)前目錄的內(nèi)容命令:ls英文全拼:list功能:列出
    發(fā)表于 08-19 10:06

    常見的shell命令之文件操作相關(guān)命令

    1、touch創(chuàng)建新文件命令:touch英文全拼:功能:創(chuàng)建大小為0的一個(gè)空文件參數(shù):touch 文件名示例:2、echo創(chuàng)建有內(nèi)容的文件命令:echo功能:將內(nèi)容回顯到輸出設(shè)備,echo命令加上
    發(fā)表于 08-19 10:01

    常見的shell命令之目錄相關(guān)命令

    目錄相關(guān)命令1、pwd查看當(dāng)前目錄命令:pwd英文全拼:print work directory功能:打印當(dāng)前所在的路徑參數(shù):沒有其他參數(shù)示例:2、ls查看當(dāng)前目錄的內(nèi)容命令:ls英文全拼:list
    發(fā)表于 08-16 09:22

    shell基本介紹及常用命令shell介紹

    一、Shell是什么?我們?cè)趧傞_始接觸Linux的時(shí)候,經(jīng)常會(huì)聽到工程師提到Shell這個(gè)詞,剛開始不知道這是個(gè)干什么的,簡(jiǎn)單的說,它是一個(gè)應(yīng)用,接收用戶命令,調(diào)用相應(yīng)的內(nèi)核接口函數(shù)或應(yīng)用程序,并
    發(fā)表于 08-15 09:28

    SDRAM中的active命令介紹

    在向SDRAM 中的任何行發(fā)出 READ或 WRITE 命令之前,必須先打開該行。這是通過 ACTIVE 命令完成的。ACTIVE 命令的目的是打開或者說激活(active)bank中的一行并將數(shù)據(jù)從 DRAM 移動(dòng)到bank的
    的頭像 發(fā)表于 07-29 09:53 ?475次閱讀
    SDRAM中的active<b class='flag-5'>命令</b>介紹

    ZWS云平臺(tái)應(yīng)用(6)-設(shè)備命令

    本文講述使用ZWS物聯(lián)網(wǎng)云平臺(tái)遠(yuǎn)程下發(fā)設(shè)備命令的過程。在生產(chǎn)生活中,很多設(shè)備自身有一些控制指令,比如,路燈的開關(guān)燈命令、電機(jī)的調(diào)整轉(zhuǎn)速命令、空調(diào)的調(diào)溫命令等等。當(dāng)這些設(shè)備變成智能設(shè)備,
    的頭像 發(fā)表于 06-26 08:25 ?290次閱讀
    ZWS云平臺(tái)應(yīng)用(6)-設(shè)備<b class='flag-5'>命令</b>

    Linux的declare/typeset命令介紹

    1.功能簡(jiǎn)介 declare(別名typeset)屬Shell內(nèi)建命令,用于申明Shell變量并設(shè)置變量屬性,或查看已定義的Shell變量和
    發(fā)表于 04-08 07:03

    lscpu命令使用注意事項(xiàng)

    請(qǐng)注意,lscpu命令在不同的操作系統(tǒng)上可能會(huì)有一些差異,某些選項(xiàng)可能不可用。可以通過man lscpu命令或lscpu --help命令查看該命令的幫助文檔和更多選項(xiàng)。
    發(fā)表于 03-14 11:39 ?853次閱讀

    Linux基本命令總結(jié)

    都說Linux命令多,實(shí)際工作中我們又有多少命令會(huì)接觸用到呢?本文跟大家分享Linux運(yùn)維工作中常用的600個(gè)命令,可以說這些命令是伴隨著大家一生的運(yùn)維生涯了,看看大家有哪些還沒用過的
    的頭像 發(fā)表于 01-11 10:32 ?982次閱讀