脚本控制
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
查看信号
kill -l
crtl+C SIGINT
ctrl+Z SIGTSTP 暂停进程
程序退出 EXIT
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
信号捕获
trap 命令格式
trap commands signals 例如 trap "echo hehe" SIGINT 当收到ctrl-c时输出 hehe,多个信号 空格隔开
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
移除捕获
使用 “-” 移除捕获
trap - SIGINT 移除忽略ctrl-c信号
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
count=1
trap "echo hello" SIGINT
while [ $count -lt 50 ]
do
echo "#loop $count"
sleep 3
count=$[$count + 1 ]
if [ $count -eq 5 ]
then
trap - SIGINT
echo "I just remove the trap"
fi
done
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
trap "echo hello" SIGINT 捕获ctrl-c信号 如果在$count等于1-5的时候执行ctrl-c这忽略信号
if [ $count -eq 5 ]
then
trap - SIGINT
echo "I just remove the trap"
fi
在$count=5后 移除捕获
则受到ctrl-c之后中断
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
以后台模式运行脚本
nohup scripts & and & jobs kill %ID
演示的时候给脚本755 权限 执行不能使用sh
/script & ## 1111
and
nohup /script & ##2222
注销用户 登陆在查看进程是否在 1111不在 2222在
运行多个后台程序 &
每运行一个后台程序 都会有一个后台作业号
./test1 &
./test2 &
此类后台运行当注销该账户的时候所有后台程序也退出
不使用控制台的情况下运行脚本 nohup scripts &
ctrl-z bg fg
ctrl-z 停止当前运行程序
fg 后台到前台
bg 启动后台停止程序
nice指定程序运行的优先级 -19 ---- 20 值越小 优先级越大
nice -n -10 ./test &
renice 更改正在运行程序的优先级
renice 10 -p 1234 -p pid
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
任务定制
at batch cron
at atq atrm
batch 让脚本在计算机负载比较低的情况下运行
batch -f filename time 如果你定义的该时间服务器负载高 会延迟执行
cron
定制cron任务表格
crontab -e
anacron 程序
cron只能在linux运行的时候执行 当linux关闭后就不会再运行了 anacron能够在机器关闭运行后检查程序使用的时间戳确定
程序是否在关闭服务器的时候错过了运行,如果错过了会安排程序尽快运行
anacron程序使用自己的表格 (/etc/anacron)指定作业
表格格式
period delay identifier command
period 定义作业应该间隔多久运行一次 以天为单位
delay 指定在anacron程序确定应该运行一个命令之后需要多长时间才会实际运行该命令,该选项可以为不同的命令设置不同的
执行延迟,避免在开机时大量程序执行
identifier 是一个唯一的非空字符串 可以唯一的标识日志消息和错误电子邮件中的作用