处理信号
以后台模式运行脚本
禁止挂起
作业控制修改脚本优先级
脚本执行自动化
Linux利用信号与运行在系统中的进程进行通信
停止进程会让进程继续保留在内存中
shell将shell中每个运行的进程称为作业,并为作业分配唯一的作业号
Linux信号
1 SIGHUP 挂起进程
2 SIGINT 终止进程
3 SIGQUIT 停止进程
9 SIGKILL 无条件终止进程
15 SIGTERM 尽可能终止进程
17 SIGSTOP 无条件停止进程,但不是终止进程
18 SIGTSTP 停止或暂停进程,但不终止进程
19 SIGCONT 继续运行停止的进程
捕获信号
trap 命令允许你来指定shell脚本要监看并从shell中拦截的Linux信号
trap cpmmands signals
trap "echo 'aaaaaaa'" SIGINT
trap "echo Goodbye..." EXIT
count=1
while [ $count -le 10 ]
do
echo "Loop #$count"
sleep 2
count=$[ $count+1 ]
done
#删除已设置好的捕获
trap -- SIGINET
shell会执行在 trap 命令行指定的命令
删除已设置好的捕获
trap – SIGINET
后台模式运行shell脚本,在命令后加个 & 符就行了
nohup 脚本一直以后台模式运行到结束,即使你退出了终端会话
cat nohup.out
作业控制
jobs -l 列出进程的PID以及作业号
bg
fg
调整谦让度
nice命令
nice -n 10 ./test4.sh > test4.out &
ps -p 4973 -o pid,ppid,ni,cmd
renice 命令你指定运行进程的PID来改变它的优先级。
renice -n 10 -p 5055
定时运行作业
at 命令和 cron 表
atd 守护进程会检查系统上的一个特殊目录(通常位于/var/spool/at),默认情况下, atd 守护进程会每60秒检查一下这个目录
at [-f filename] time
10:15 PM。
10:15。
now noon midnight
标准日期格式,比如MMDDYY、MM/DD/YY或DD.MM.YY。
文本日期,比如Jul 4或Dec 25,
当前时间+25 min
明天10:15 PM
10:15+7天
当你使用at命令时,该作业会被提交到作业队列,作业队列通常用小写字母a~z
和大写字母A~Z来指代。作业队列的字母排序越高,作业运行的优先级就越低(更高的 nice 值)
at -f test13.sh now
job 7 at 2015-07-14 12:38
tomorrow
at 命令会显示分配给作业的作业号以及为作业安排的运行时间。 -f 选项指明使用哪个脚本
文件, now 指示 at 命令立刻执行该脚本。
cat /var/spool/mail/phy
atq命令可以查看系统中有哪些作业在等待
atrm n 删除作业
安排需要定期执行的脚本
cron时间表
min hour dayofmonth month dayofweek command
cron时间表允许你用特定值、取值范围(比如1~5)或者是通配符(星号)来指定条目
15 10 * * 1 command
mon tue wed thu fri sat sun
0-6 7
命令列表必须指定要运行的命令或脚本的全路径名
15 10 * * * /home/rich/test4.sh > test4out
构建cron时间表
crontab -l
列出已有时间表
crontab -e 添加条目
cron目录
ls /etc/cron.*
如果脚本需要每天运行一次,只要将脚本复制到daily目录,cron就会每天执行它。
cat /var/spool/anacron/cron.monthly
anacron程序使用自己的时间表(通常位于/etc/anacrontab)来检查作业目录