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

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

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

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

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

1.命令簡介

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

2.命令格式

trap[-lp][ARG][SIGSPECS]

3.選項(xiàng)說明

-l
列出信號名稱與對應(yīng)的數(shù)值
-p
列出信號與其綁定的命令列表
ARG
與指定信號綁定的命令。如果 ARG 為空字符串,表示忽略信號;如果 ARG 不指定(缺省)或?yàn)?,表示執(zhí)行信號的默認(rèn)動作
SIGSPECS
信號列表,可以是信號名稱,也可以是信號對應(yīng)的數(shù)值??捎眯盘柨梢允褂?span style="color:#e6c07b;line-height:26px;">trap-l查看

4.常用示例

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

trap""HUPINTQUITTSTP

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

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.信號簡介

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

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

以下是一些你可能會遇到的,要在程序中使用的常見的信號:

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

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

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

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)題:每天一個 Linux 命令(108):trap 命令

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


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

    關(guān)注

    87

    文章

    11177

    瀏覽量

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

    關(guān)注

    5

    文章

    669

    瀏覽量

    21956

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

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

收藏 人收藏

    評論

    相關(guān)推薦

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

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

    常見的shell命令之其他命令

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

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

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

    python shell怎么用

    Python Shell是一種交互式解釋器,可以通過命令行直接運(yùn)行Python代碼。在Shell中,可以輸入一行代碼并立即得到結(jié)果,非常適合于測試、嘗試新代碼或進(jìn)行簡單的任務(wù)。本文將詳細(xì)介紹
    的頭像 發(fā)表于 11-29 14:36 ?1026次閱讀

    Shell基本介紹及目錄常用命令

    01、Shell是什么?我們在剛開始接觸Linux的時候,經(jīng)常會聽到工程師提到Shell這個詞,那么Shell到底是什么呢?簡單的說,它是一個應(yīng)用,接收用戶命令,調(diào)用相應(yīng)的內(nèi)核接口函數(shù)
    的頭像 發(fā)表于 11-15 13:06 ?430次閱讀
    <b class='flag-5'>Shell</b>基本介紹及目錄常用<b class='flag-5'>命令</b>

    linux中source命令的用法

    在Linux中,source命令通常用于重新執(zhí)行剛修改的初始化文件,使之立即生效,而不必注銷并重新登錄。source命令可以用于讀取并執(zhí)行腳本文件中的命令,通常用于在當(dāng)前shell環(huán)境
    的頭像 發(fā)表于 11-08 14:35 ?2075次閱讀

    linux命令行與shell編程實(shí)戰(zhàn)

    Linux命令行與Shell編程實(shí)戰(zhàn)主要涉及以下內(nèi)容: Linux命令行基礎(chǔ):學(xué)習(xí)Linux命令行的基本操作,如文件管理、進(jìn)程管理、網(wǎng)絡(luò)配置等。熟悉使用
    的頭像 發(fā)表于 11-08 10:57 ?679次閱讀

    linux命令shell編程有什么聯(lián)系

    Linux命令Shell編程之間存在密切的聯(lián)系。 首先,Shell是Linux命令行下的解釋器,它提供了一個用戶界面,使用戶能夠與Linux內(nèi)核進(jìn)行交互。
    的頭像 發(fā)表于 11-08 10:53 ?842次閱讀

    shell命令和linux命令一樣嗎

    Shell命令和Linux命令并不完全一樣。 首先,Shell是一種命令行解釋器,它是用來解釋和執(zhí)行用戶輸入的
    的頭像 發(fā)表于 11-08 10:51 ?2603次閱讀

    shell常用的20個命令

    以下是Shell中常用的20個命令: ls :列出當(dāng)前目錄中的文件和子目錄。 cd :改變當(dāng)前目錄。 pwd :顯示當(dāng)前目錄的路徑。 cp :復(fù)制文件或目錄。 mv :移動或重命名文件或目錄。 rm
    的頭像 發(fā)表于 11-08 10:48 ?4093次閱讀

    shell編程常用命令

    Shell編程中,常用命令包括以下幾種: ls :列出目錄中的文件和子目錄。 cp :復(fù)制文件或目錄。 cat :查看文件的內(nèi)容,可以用于合并文件。 touch :創(chuàng)建一個新文件或更新已存在文件
    的頭像 發(fā)表于 11-08 10:43 ?893次閱讀

    shell命令提示符的具體含義

    Shell命令提示符的含義因操作系統(tǒng)和Shell類型而異。在Linux系統(tǒng)中,Shell命令提示符通常由以下幾部分組成: 用戶名:顯示當(dāng)前登
    的頭像 發(fā)表于 11-08 10:37 ?1301次閱讀

    shell并行調(diào)用腳本

    Shell腳本中,可以使用一些技巧來實(shí)現(xiàn)并行調(diào)用。以下是幾種常見的方法: 使用后臺進(jìn)程:在Shell腳本中,可以使用"command2 上述腳本中,每個命令都在末尾添加了"&"符號,它們將在
    的頭像 發(fā)表于 11-08 10:23 ?866次閱讀

    shell腳本基本命令

    Shell腳本是一種可執(zhí)行文件,它包含了一組用某種特定語言編寫的命令,這些命令可以被解釋器(如bash)執(zhí)行。以下是一些常見的shell腳本基本命令
    的頭像 發(fā)表于 11-08 10:08 ?1905次閱讀

    單片機(jī)上如何做shell命令行交互

    做過嵌入式Linux開發(fā)或使用過桌面Linux系統(tǒng)的童鞋們,肯定對shell命令交互印象比較深刻,然而我們大多數(shù)搞嵌入式軟件開發(fā)的碼農(nóng)都是基于單片機(jī),比如51、STM32等進(jìn)行開發(fā)的,在單片機(jī)上能否
    的頭像 發(fā)表于 11-01 15:16 ?1197次閱讀