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
    +关注

    关注

    88

    文章

    11628

    浏览量

    217973
  • 命令
    +关注

    关注

    5

    文章

    746

    浏览量

    23446

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Shell历史命令history用法

    1. 显示历史命令列表 「介绍」:history 命令用于显示当前会话中执行过的命令的列表,以及每个命令对应的编号。「示例代码」:history 2. 使用历史
    发表于 12-02 06:10

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

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

    Linux基础命令which详解

    在Linux系统中,which命令用于查找并显示指定命令的可执行文件路径。这对于系统管理员和开发人员来说是一个非常有用的工具,可以帮助定位命令所在的位置,确认命令是否已正确安装,并且能
    的头像 发表于 07-29 17:58 591次阅读

    一文掌握Linux命令

    作为一名运维工程师,熟练掌握Linux命令是基本功中的基本功。无论是日常工作中的系统维护,还是面试时的技术考核,Linux命令都是绕不开的核心技能。本文将从实战角度出发,系统梳理运维工程师必须掌握的Linux命令,并结合实际场景
    的头像 发表于 07-22 15:23 443次阅读

    【RA-Eco-RA6M4开发板评测】移植shell实现命令交互

    /XLmbJn0SKoDT1aLdxHDrbg 一个超级精简高可移植的shell命令行C实现二. 移植移植参考上述文章,很简单只需要实现输入输出接口 即可。代码见shell.c/h shell
    发表于 07-19 22:47

    SSH常用命令详解

    SSH常用命令详解
    的头像 发表于 06-04 11:30 1723次阅读

    如何使用Traceroute命令

    以下是如何使用 traceroute 命令的详细指南,包括其语法、选项和实际示例。
    的头像 发表于 06-04 11:28 1549次阅读

    Docker Volume管理命令大全

    Docker Volume管理命令大全
    的头像 发表于 05-28 17:14 613次阅读

    Linux常用命令大全

    Linux常用命令是指在Linux操作系统中广泛使用的命令工具,这些命令工具可以完成各种不同的任务,如管理文件和目录、操作进程、网络通信、软件安装等。
    的头像 发表于 05-03 18:08 1614次阅读

    树莓派新手必看!在树莓派上编写和运行 Shell 脚本!

    在本教程中,我将讨论Shell脚本的基础知识、它们的用途以及如何在RaspberryPi上编写和运行Shell脚本。什么是Shell脚本?Shell脚本可以让你自动化几乎所有在Linu
    的头像 发表于 03-25 09:28 885次阅读
    树莓派新手必看!在树莓派上编写和运行 <b class='flag-5'>Shell</b> 脚本!

    Linux系统中最重要的三个命令

    Linux三剑客是Linux系统中最重要的三个命令,它们以其强大的功能和广泛的应用场景而闻名。这三个工具的组合使用几乎可以完美应对Shell中的数据分析场景,因此被统称为Linux三剑客。
    的头像 发表于 03-03 10:37 797次阅读

    Linux ip命令常用操作

    Linux ip命令常用操作 在Linux系统中,ip命令是用于管理网络接口和路由的强大工具。相比于旧的 ifconfig命令,ip命令提供了更多的功能和更细粒度的控制。本文将详细介绍
    的头像 发表于 02-19 10:23 1072次阅读

    Kubernetes Pod常用管理命令详解

    Kubernetes Pod常用管理命令详解
    的头像 发表于 02-17 14:06 989次阅读
    Kubernetes Pod常用管理<b class='flag-5'>命令</b>详解

    Linux文件管理命令详解

    cat命令描述:该命令用于连接文件并打印到标准输出设备上。
    的头像 发表于 02-17 10:34 890次阅读
    Linux文件管理<b class='flag-5'>命令</b>详解

    常用linux命令

    使用command A | command B | command C命令,将A命令产生的标准输出作为B命令的标准输入(注意只能接收前一个命令的标准输出)。
    的头像 发表于 01-20 14:26 661次阅读