shell脚本5---信号处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell脚本5---信号处理相关的知识,希望对你有一定的参考价值。

参考技术A 默认情况下,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启动的所有进程。

在无条件终止作业时,开始不会得到任何反应。但下次有shell提示符时,你会看到一个消息说明作业已经被终止了。

方括号中的数字时shell分配的作业号。每当shell产生一个提示符时,它就会显示shell中已经改变状态的作业的状态。在你无条件终止一个作业后,下次强制shell生成一个提示符时,shell会产生一条消息,说明作业在运行时被无条件终止了。

trap命令允许你来指定shell脚本要watch哪些linux信号并从shell中拦截。如果脚本收到了trap命令中列出的信号,它会阻止它被shell处理,而在本地处理。
trap命令的格式:

signals多个信号用空格隔开。
以下例子用trap命令来捕捉SIGINT和SIGTERM信号

当我们执行Ctrl+C时,shell脚本不会中断。

要捕捉shell脚本的退出,只要在trap命令后加上EXIT信号就行。

执行这个脚本,在脚本执行完成退出前,会输出Goodbye。

参数列表

jobs输出中会有加号和减号。带加号的作业会被当作默认作业。在使用作业控制命令时,如果未在命令行指定任何作业号,该作业会被当作操作对象。带减号的作业则会在默认作业完成后成为下一个默认作业。任何时候只有一个带加号和一个带减号的作业。

在bash作业控制中,可以将已停止的作业作为前台或者后台进程重启。前台进程会接管当前的工作终端。

nice命令允许在执行一个命令是调整它的调度优先级。优先级是一个整数值。从-20(最高优先级)到20(最低优先级)。默认情况下,bash shell以优先级0启动所有进程。

renice可以改变已运行命令的优先级。

普通用户只能调整属于自己进程的优先级。并且只能降低优先级。
root可以调整任何进程的优先级到任意级别。

如何设置一个计划任务在每月的最后一天执行?

使用shell脚本实现批处理安装apk

参考技术A 在智能终端的性能测试中,经常需要安装大量的apk使用来测试设备的流畅性,如果使用手工安装不免效果很低还特别枯燥

安装apk命令:adb install testapk         

如果是系统应用,adb insatll是无法直接安装的,必须覆盖安装,adb insatll -r testapk

1)此处介绍在ubuntu环境下如果使用批处理快捷的安装apk,执行此shell文件需要cd进入apk文件夹下

以上是关于shell脚本5---信号处理的主要内容,如果未能解决你的问题,请参考以下文章

shell脚本临时文件生成和使用,信号捕捉

如何在linux Shell脚本里面把一个数组传递到awk内部进行处理

shell脚本——正则表达式Sed与Awk文本处理工具详解

shell:处理文本

自学Linux Shell3.5-目录处理命令mkdir rmdir

linux文本处理和shell编程