0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Shell内建命令:trap命令

Linux爱好者 来源:Linux爱好者 作者:恋猫大鲤鱼 2021-02-09 18:19 次阅读

1.命令简介

trap 命令是 Shell 内建命令,用于指定在接收到信号后将要采取的动作。常见的用途是在脚本程序被中断时完成清理工作。

2.命令格式

trap[-lp][ARG][SIGSPECS]

3.选项说明

-l
列出信号名称与对应的数值
-p
列出信号与其绑定的命令列表
ARG
与指定信号绑定的命令。如果 ARG 为空字符串,表示忽略信号;如果 ARG 不指定(缺省)或为-,表示执行信号的默认动作
SIGSPECS
信号列表,可以是信号名称,也可以是信号对应的数值。可用信号可以使用trap-l查看

4.常用示例

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

trap""HUPINTQUITTSTP

(2)捕获 HUP、INT、QUIT、TSTP 信号,并执行默认动作。

trapHUPINTQUITTSTP
#或
trap-HUPINTQUITTSTP

(3)挂载 Shell 进程结束前需要执行的命令。格式为:trap “commands” EXIT。如脚本 exit.sh:

#!/bin/bash

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

执行 exit.sh 输出:

start
beforeexit
end

5.信号简介

信号是一种进程间通信机制,它给应用程序提供一种异步的软件中断,使应用程序有机会接受其他程序发送的命令(即信号)。应用程序收到信号后,有三种处理方式:忽略、默认或捕捉。进程收到一个信号后,会检查对该信号的处理机制。如果是 SIG_IGN,就忽略该信号;如果是 SIG_DFT,则会采用系统默认的处理动作,通常是终止进程或忽略该信号;如果给该信号指定了一个处理函数,则会中断当前进程正在执行的任务,转而去执行该信号的处理函数,返回后再继续执行被中断的任务。

在有些情况下,我们不希望自己的 Shell 脚本在运行时被中断,比如说我们写的 Shell 脚本设为某一用户登录系统后默认执行的 Shell 脚本,使这一用户进入系统后只能做某一项工作,如数据库备份, 我们不希望用户使用 Ctrl+C 发送 SIGINT 信号来中断当前 Shell 脚本的执行,进入到 Shell 交互模式,做我们不希望做的事情。这便用到了信号处理。

以下是一些你可能会遇到的,要在程序中使用的常见的信号:

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

(点击查看大图)

详细的信号列表,可以使用命令trap -lkill -l查看,也可以查看头文件。例如,执行trap -l,查看系统支持的所有信号如下:

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

参考文献

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

责任编辑:xj

原文标题:每天一个 Linux 命令(108):trap 命令

文章出处:【微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11219

    浏览量

    208872
  • 命令
    +关注

    关注

    5

    文章

    678

    浏览量

    21981

原文标题:每天一个 Linux 命令(108):trap 命令

文章出处:【微信号:LinuxHub,微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Linux系统中shell命令解析

    shell是Linux系统的用户界面,提供了用户与内核交互的一种接口,它接收用户输入的命令并到送到内核去执行,因此也被称为Linux的命令解释器。
    的头像 发表于 11-05 15:40 129次阅读

    SD的命令和响应

    一个完整的 SD 卡操作过程是:主机(单片机等)发起“命令”,SD 卡根据命令的内容决定是 否发送响应信息及数据等,如果是数据读/写操作,主机还需要发送停止读/写数据的命令来结束 本次操作,这意味着主机发起
    的头像 发表于 10-08 15:49 315次阅读
    SD的<b class='flag-5'>命令</b>和响应

    shell具有的功能和特点

    Shell 是一个命令行解释器,用于与操作系统进行交互。它提供了一种方便的方式来执行命令、管理文件和目录、运行程序等。以下是 Shell 的功能和特点的介绍:
    的头像 发表于 08-30 14:48 349次阅读

    嵌入式学习-常见的shell命令之其他命令

    1、clear清屏命令命令:clear功能:清除屏幕参数:无 示例:清屏前。执行清屏命令后,终端界面显示信息被清除。2、man帮助命令命令
    发表于 08-22 09:42

    常见的shell命令之其他命令

    1、clear清屏命令命令:clear功能:清除屏幕参数:无 示例:清屏前。执行清屏命令后,终端界面显示信息被清除。2、man帮助命令命令
    发表于 08-21 09:49

    常见的shell命令之文件操作相关命令

    1、touch创建新文件命令:touch英文全拼:功能:创建大小为0的一个空文件参数:touch 文件名示例:2、echo创建有内容的文件命令:echo功能:将内容回显到输出设备,echo命令加上
    发表于 08-19 10:01

    常见的shell命令之目录相关命令

    目录相关命令1、pwd查看当前目录命令:pwd英文全拼:print work directory功能:打印当前所在的路径参数:没有其他参数示例:2、ls查看当前目录的内容命令:ls英文全拼:list
    发表于 08-16 09:22

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

    一、Shell是什么?我们在刚开始接触Linux的时候,经常会听到工程师提到Shell这个词,刚开始不知道这是个干什么的,简单的说,它是一个应用,接收用户命令,调用相应的内核接口函数或应用程序,并
    发表于 08-15 09:28

    Linux的declare/typeset命令介绍

    1.功能简介 declare(别名typeset)属Shell内建命令,用于申明Shell变量并设置变量属性,或查看已定义的Shell变量和
    发表于 04-08 07:03

    lscpu命令使用注意事项

    请注意,lscpu命令在不同的操作系统上可能会有一些差异,某些选项可能不可用。可以通过man lscpu命令或lscpu --help命令查看该命令的帮助文档和更多选项。
    发表于 03-14 11:39 750次阅读

    Linux基本命令总结

    都说Linux命令多,实际工作中我们又有多少命令会接触用到呢?本文跟大家分享Linux运维工作中常用的600个命令,可以说这些命令是伴随着大家一生的运维生涯了,看看大家有哪些还没用过的
    的头像 发表于 01-11 10:32 938次阅读

    uboot命令的执行过程是什么

    U-boot是通过执行u-boot提供的命令来加载Linux内核的,其中 命令bootm的功能 即为从memory启动Linux内核映像文件。 在讲解bootm加载内核之前,先来看看u-boot中
    的头像 发表于 12-04 17:31 754次阅读

    python shell怎么用

    Python Shell是一种交互式解释器,可以通过命令行直接运行Python代码。在Shell中,可以输入一行代码并立即得到结果,非常适合于测试、尝试新代码或进行简单的任务。本文将详细介绍
    的头像 发表于 11-29 14:36 1098次阅读

    python调用windows命令

    Python是一种强大的编程语言,可以用于开发各种不同类型的应用程序。其中一个常见的用途是使用Python调用Windows命令来执行特定的任务。在本文中,我们将详细讨论如何使用Python调用
    的头像 发表于 11-29 14:34 978次阅读

    linux关闭docker的命令

    在 Linux 系统中,关闭 Docker 的操作可以通过以下多种方式进行。本文将详细讲解每一种方式,并提供示例代码和命令,以帮助读者更好地理解和实践。 使用 docker 命令 最常用的方法
    的头像 发表于 11-23 09:39 2748次阅读