crontab 使用

12 篇文章 0 订阅

用于设置周期性被执行的指令

时程表的格式如下 :  

 f1 f2 f3 f4 f5 program  

 其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程式。   

当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程式,其余类推   

当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其余类推   

当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其余类推   

当 f1 为 a, b, c,... 时表示第 a, b, c,... 分钟要执行,f2 为 a, b, c,... 时表示第 a, b, c...个小时要执行,其余类推   

使用者也可以将所有的设定先存放在档案 file 中,用 crontab file 的方式来设定时程表。


上面就是从baidu百科里转过来的crontab的使用啦。

最近服务器有时会无缘无故退出,又不是奔溃,没有core文件生成,暂时又找不到原因(暂时怀疑是lua的问题)。只能先让它运行着,所以打算写个脚本,做这样的一件事:

每隔一分钟就检查一下,如果server进程不见,而且没有core文件就重启。crontab的路径问题搞了我很长时间,忘了可以用cd解决的难过

总结了几个注意点:

1) 要写各个文件要写绝对路径,不然手动是可以执行,在里面就不行; 可以用cd改变
2)CRONTAB执行会返回一个系统EMAIL,在/var/spool/mail/,可以查看执行的结果
3)如果同一个规则要执行多个命令,把它写到一个sh文件里

最后的脚本:

#!/bin/sh
SERVER_NAME="GameServer"

NUM=`ps aux|grep GameServer |grep -v grep|wc -l`
EXEPATH="/home/linwencai/trunk/bin"
CORE="core"
COREEXIST=0

cd $EXEPATH
for line in `ls $EXEPATH`
do
#       echo "line = ${line:0:4}"

        if [ ${line:0:4} = $CORE ] ;then
                COREEXIST=1

        fi
done


if [ $NUM -eq 0 ] && [ $COREEXIST -eq 0 ] ; then
        $EXEPATH/m3ctl.sh restart
        log_string="Server restart at "
        date_time=`date`
        echo $log_string[$date_time] >> restartLog
fi


写这个脚本的时候,学了点shell的语法:

1)取串的前n个字符   ${line:0:4} 

2)给改变变量的值 COREEXIST=1,不能用$COREEXIST=1

3)if语句判断条件多个时 [ $NUM -eq 0 ] && [ $COREEXIST -eq 0 ] 

4)连接两个字符串 $log_string[$date_time]  ,直接写到一起就行了


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值