- 处理信号
常用信号:
1,SIGHUP 挂起进程
2,SIGINT 终止进程
3,SIGOUT 停止进程
9,SIGQUIT 无条件终止进程
15,SIGTERM 可能的话终止进程
17,SIGSTOP 无条件停止进程,但不是终止进程
18,SIGTSTP 停止或暂停进程,但不终止进程
19,SIGCONT 继续运行停止的进程
默认情况下bash shell 会忽略收到的 SIGQUIT和SIGTERM,但是会处理SIGHUP和SIGINT
产生信号:
终止进程 Ctrl + C 会产生SIGINT信号
暂停进程 Ctrl + Z 会产生SIGTSTP信号
捕捉信号:
trap命令 trap commands signals
运行结果如下:
使用Ctrl + C,脚本会执行trap命令中指定的echo语句。而不是忽略此信号,并允许shell停止该脚本。
捕捉脚本的退出
退出时执行 trap里面的echo语句
移除捕捉:
- 破折号用来移除信号捕捉。但是,如果在捕捉被移除之前就收到信号,还是会处理的,如下图:
- 以后台模式运行脚本
在命令后面加 & 就可以在后台运行了
可以同时在后台运行多个程序
- 在非控制台下运行脚本
nohup commands & 即使关闭会话该进程也不会结束,结果会保存在 nohub.out文件里
- 作业控制
查看作业
jobs查看作业
+号默认作业,-号默认作业完了之后额默认作业,同时最多只能有一个+号和一个-号
重启停止的作业
对于停止的作业,可以用bg 作业好或者fg作业号重启作业。
bg是以后台模式重启作业,fg是前台模式重启作业
- 调整前让度
调度优先级 -20(最高)到+20(最低),默认情况以优先级0来启动所有进程
nice命令 nice -n 10 bash test1.sh & 改变优先级,
普通用户是无法提升优先级的
renice命令允许你改变已经允许进程的优先级,renice 10 -p 12345
只能对属于自己的进程执行renice
普通用户只能降低进程优先级
root用户可以增加和降低优先级
- 定时运行作业
at命令来计划执行作业 at [ -f filename ] time
支持的时间格式
小时分钟 10:20
AM/PM 10:20~PM
特定命名 now noon midinight teatime
标准日期 MMDDYY MM/DD/YY DD.MM.YY
文本日期 Jul 4或者 Dec 25
或者时间增量
当前时间+30 min
明天 10:20~PM
10:20 + 7天
使用at是 作业会提交到作业对了 job queue中,通常用小写字母a~z来引用,字母排序越高,运行优先级越低,可以用-q指定不同的队列字母。
atq查看队列
atrm删除作业
计划定期执行脚本
crontab -e 来添加定时任务
min hour dayofmonth month dayofweek command
- 启动时运行
开机时运行脚本
/etc/inittab 文件列出系统运行级别 run level