威宁住房和城乡建设局网站,wordpress看板娘,泰州网站制作,怎么制作网站的二维码作者#xff1a;李振良OK链接#xff1a;https://blog.51cto.com/lizhenliang/1899347哈喽#xff0c;各位新来的小伙伴们#xff0c;大家好#xff01;由于公众号做了改版#xff0c;为了保证公众号的资源能准时推送到你手里#xff0c;大家记得将咱们的公众号 加星标置… 作者李振良OK链接https://blog.51cto.com/lizhenliang/1899347哈喽各位新来的小伙伴们大家好由于公众号做了改版为了保证公众号的资源能准时推送到你手里大家记得将咱们的公众号 加星标置顶 在此真诚的表示感谢~正文如下# Linux信号类型信号(Signal)信号是在软件层次上对中断机制的一种模拟通过给一个进程发送信号执行相应的处理函数。进程可以通过三种方式来响应一个信号1)忽略信号即对信号不做任何处理其中有两个信号不能忽略SIGKILL及SIGSTOP。2)捕捉信号。3)执行缺省操作Linux对每种信号都规定了默认操作。Linux究竟采用上述三种方式的哪一个来响应信号呢取决于传递给响应的API函数。Linux支持的信号有编号信号名称缺省动作描述1SIGHUP终止终止进程挂起2SIGINT终止键盘输入中断命令一般是CTRLC3SIGQUITCoreDump键盘输入退出命令一般是CTRL\4SIGILLCoreDump非法指令5SIGTRAPCoreDumptrap指令发出一般调试用6SIGABRTCoreDumpabort(3)发出的终止信号7SIGBUSCoreDump非法地址8SIGFPECoreDump浮点数异常9SIGKILL终止立即停止进程不能捕获不能忽略10SIGUSR1终止用户自定义信号1像Nginx就支持USR1信号用于重载配置重新打开日志11SIGSEGVCoreDump无效内存引用12SIGUSR2终止用户自定义信号213SIGPIPE终止管道不能访问14SIGALRM终止时钟信号alrm(2)发出的终止信号15SIGTERM终止终止信号进程会先关闭正在运行的任务或打开的文件再终止有时间进程在有运行的任务而忽略此信号。不能捕捉16SIGSTKFLT终止处理器栈错误17SIGCHLD可忽略子进程结束时父进程收到的信号18SIGCONT可忽略让终止的进程继续执行19SIGSTOP停止停止进程不能忽略不能捕获20SIGSTP停止停止进程一般是CTRLZ21SIGTTIN停止后台进程从终端读数据22SIGTTOU停止后台进程从终端写数据23SIGURG可忽略紧急数组是否到达socket24SIGXCPUCoreDump超出CPU占用资源限制25SIGXFSZCoreDump超出文件大小资源限制26SIGVTALRM终止虚拟时钟信号类似于SIGALRM但计算的是进程占用的时间27SIGPROF终止类似与SIGALRM但计算的是进程占用CPU的时间28SIGWINCH可忽略窗口大小改变发出的信号29SIGIO终止文件描述符准备就绪可以输入/输出操作了30SIGPWR终止电源失败31SIGSYSCoreDump非法系统调用CoreDump(核心转储)当程序运行过程中异常退出时内核把当前程序在内存状况存储在一个core文件中以便调试。Linux支持两种信号一种是标准信号编号1-31称为非可靠信号(非实时)不支持队列信号可能会丢失比如发送多次相同的信号进程只能收到一次如果第一个信号没有处理完第二个信号将会丢弃。另一种是扩展信号编号32-64称为可靠信号(实时)支持队列发多少次进程就可以收到多少次。信号类型比较多我们只要了解下记住几个常用信号就行了红色标记的我觉得需要记下。发送信号一般有两种情况一种是内核检测到系统事件比如键盘输入CTRLC会发送SIGINT信号。另一种是通过系统调用kill命令来向一个进程发送信号。2、kill命令kill命令发送信号给进程。命令格式kill [-s sigspec | -n signum | -sigspec] pid | jobspec ...kill -l [sigspec]-s # 信号名称-n # 信号编号-l # 打印编号1-31信号名称示例给一个进程发送终止信号kill -s SIGTERM pid或kill -n 15 pid或kill -15 pid或kill -TREM pid3、trap命令trap命令定义shell脚本在运行时根据接收的信号做相应的处理。命令格式trap [-lp] [[arg] signal_spec ...]-l #打印编号1-64编号信号名称arg # 捕获信号后执行的命令或者函数signal_spec # 信号名或编号一般捕捉信号后做以下几个动作1)清除临时文件2)忽略该信号3)询问用户是否终止脚本执行示例1按CTRLC不退出循环#!/bin/bashtrap 2 # 不指定arg就不做任何操作后面也可以写多个信号以空格分隔 for i in {1..10}; do echo $i sleep 1done# bash a.sh123^C456^C78910示例2循环打印数字按CTRLC退出并打印退出提示#!/bin/bashtrap echo exit...;exit 2for i in {1..10}; do echo $i sleep 1done # bash test.sh123^Cexit...示例3让用户选择是否终止循环#!/bin/bashtrap func 2func() { read -p Terminate theprocess? (Y/N): input if [ $input Y] ; then exit fi } for i in {1..10}; do echo $i sleep 1done # bash a.sh123^CTerminate the process? (Y/N): Y# bash a.sh 123^CTerminate the process? (Y/N): N456...热门推荐牛逼竟然纯Java打造一款SSH客户端而且已开源~推荐一款牛逼的IDEA神器再也不怕女同事用“烂代码”来偷袭我啦~Github 2020年报告出炉了你是那只最勤劳的章鱼猫吗网友我的项目star数还是0...