linux shell 控制脚本

  • 处理信号

常用信号:

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

 

posted @ 2017-07-24 18:57  初期网工  阅读(296)  评论(0编辑  收藏  举报