控制脚本
linux 中的信号主要用用来启动,停止,终止进程等操作
下面列出了主要的信号列表
默认下bash会忽略3,15信号
以后台的方式运行脚本
- 有时我们执行命令会需要很长的时间,因此可以使用在后台的方式运行脚本,非常简单,在命令后面加 &。
- 但是使用& 这种方式执行脚本的方式要注意,脚本中的输出与shell会混杂在一起,所以最好对脚本中的stdout和stderr进行重定向。
- 每次执行时,系统会分配一个pid,要注意的时终端退出的话后台进程都会随之而退出,因此我们需要在终端退出后台进程仍然运行的方法
nohup
- nohup命令会在你退出终端仍然阻止进程结束
- 格式是:nohup command &,nohup命令还会自动将stdout和stderr的消息重定向到一个名为nohup.out的文件中
作业控制
jobs命令可以查询当前正在处理的作业,举个例子
执行一段shell脚本,如下vim test.sh
#!/bin/bash # Test job control # echo "Script Process ID: $$" # count=1 while [ $count -le 10 ] do echo "Loop #$count" sleep 10 count=$[ $count + 1 ] done # echo "End of script..."
先执行sh test.sh,再ctrl+z停止,再执行sh test.sh > test.out &
使用jobs命令查询,jobs -l 结果是
$ jobs -l [1]+ 1897 Stopped ./test10.sh [2]- 1917 Running ./test10.sh > test10.out &
加号是默认作业,减号是下一个要执行的作业,任何时候都只一个加号一个减号
定时执行任务
定时执行任务有两种方式,1是at命令,2是cron命令,下面来介绍这cron
cron采用一个特别的时间格式去指定任务何时运行,格式如下
min hour dayofmonth month dayofweek command 每天10:15运行:15 10 * * * command 每周一4:15执行:15 16 * * 1 command
注意:命令必须是脚本的全路径名
crontab -l 可以列出已存在的cron时间表