课时94:脚本自动化_脚本信号_信号基础

2.1.1 信号基础

这一节,我们从 基础知识、简单实践、小结 三个方面来学习。

基础知识

简介

powershell 复制代码
	当我们在构建一些更高级的脚本的时候,就会涉及到如何在linux系统上来更好的运行和控制它们,到目前为止,我们运行脚本的方式都是以实时的模式,在命令行来运行它。但是这并不是脚本唯一的运行方式,我们可以在linux系统中以更丰富的方式来运行它们,甚至在脚本遇到不可查的异常中止时候,以关闭linux终端界面的方式终止脚本。
	这些能力都是基于信号的机制来实现了

信号

powershell 复制代码
	linux使用信号与系统上运行的进程进行通信,想要对shell的脚本控制,只需要传递相关信号给shell脚本即可。
信号 描述 信号 描述
1 SIGHUP 挂起进程 15 SIGTERM 优雅的终止进程
2 SIGINT 终止进程 17 SIGSTOP 无条件停止进程,不终止进程
3 SIGQUIT 停止进程 18 SIGTSTP 停止或暂停进程,不终止进程
9 SIGKILL 无条件终止进程 19 SIGCONT 继续运行停止的进程
powershell 复制代码
    默认情况下,bash shell会忽略收到的任何SIGQUIT(3)和SIGTERM(15)信号(正因为这样交互式shell才不会被意外终止)。但是bash shell会处理收到的SIGHUP(1)和SIGINT(2)信号。

    如果bash shell收到SIGHUP信号,它会退出。但在退出之前,它会将信号传给shell启动的所有进程(比如shell脚本)。通过SIGINT信号,可以中断shell,Linux内核停止将CPU的处理时间分配给shell,当这种情况发生时,shell会将SIGINT信号传给shell启动的所有进程。

生成信号

powershell 复制代码
终止进程:
	ctrl+c,
暂停进程:
	ctrl+z,停止的进程继续保留在内存中,并能从停止的位置继续运行
恢复进程:
	jobs查看运行任务,fg num 重新执行
杀死进程:
	kill -9 pid

简单实践

实践1-终止进程

powershell 复制代码
[root@localhost ~]# sleep 1000
^C
[root@localhost ~]#

实践2-挂起进程

powershell 复制代码
[root@localhost ~]# sleep 1000
^Z
[1]+  已停止               sleep 1000
[root@localhost ~]# ps aux  | grep sleep
root      39067  0.0  0.0 108052   360 pts/0    T    17:28   0:00 sleep 1000

实践3-恢复进程

powershell 复制代码
查看所有挂起进程
[root@localhost ~]# jobs
[1]+  已停止               sleep 1000

恢复挂起进程的id
[root@localhost ~]# fg 1
sleep 1000
^C
[root@localhost ~]#

实践4-杀死进程

powershell 复制代码
后台执行命令
[root@localhost ~]# sleep 1000 &
[1] 39074
[root@localhost ~]# ps aux  | grep sleep | grep -v grep
root      39074  0.0  0.0 108052   360 pts/0    S    17:30   0:00 sleep 1000

强制杀死进程
[root@localhost ~]# kill -9 39074
[root@localhost ~]#
[1]+  已杀死               sleep 1000
[root@localhost ~]# jobs

小结

复制代码
相关推荐
倔强的石头10642 分钟前
云原生环境下的存储弹性与自动化:表空间目录动态挂载与冷热分层实践
运维·云原生·自动化
SilentSamsara42 分钟前
生成器完全指南:`yield` 与惰性求值的工程价值
linux·开发语言·python·算法·机器学习·青少年编程
Tim风声(网络工程师)8 小时前
光功率计中的红光(光衰测试设备)的使用
运维·网络
ar01238 小时前
AR电路巡检:让电力运维进入智能可视化时代
运维·人工智能·ar
YJlio8 小时前
7.4.5 Windows 11 企业网络连接与网络重置实战:远程访问、本地策略与故障恢复
前端·chrome·windows·python·edge·机器人·django
2301_7807896610 小时前
云服务器数据会泄露吗?怎么保护云服务器的数据
运维·服务器·tcp/ip·网络安全
2301_7807896610 小时前
云服务器被黑能恢复吗?云服务器被黑的解决办法
运维·服务器·网络·安全·web安全
淘小白_TXB219610 小时前
头条百家采集改写发布软件用户使用手册
运维·服务器·头条采集·头条号采集·文章采集·头条采集软件
不怕犯错,就怕不做11 小时前
RK3562的CPU如何降频及关闭硬件编解码
linux·驱动开发·嵌入式硬件
CoderMeijun11 小时前
Linux 文件操作详解:open/read/write/lseek 系统调用
linux·文件操作·系统调用·open·文件描述符