linux定时器crond使用方式简介

一、简介

一般来说在/etc目录下,有5个以cron开头的目录,分别是/etc/cron.hourly,/etc/cron.daily,/etc/cron.weekly,/etc/cron.monthly,/etc/cron.d。其中前四个目录下的脚本文件就是按周期调用,比如说cron.hourly下的脚本文件就是每小时调用一次,cron.daily下的脚本文件就是每天调用一次。
cron.d是用于非前四种情况,自定义调用规律的情况。其实自定义调用时,也可以直接修改/etc/crontab,但是一般不建议这样做,因此我们这里使用cron.d。

二、cron.d下文件示例

例如在cron.d下面放入myCronTest.sh(文件名随便取,自己能认出来就行)内容如下:

* * * * * root sh /tmp/myTest.sh

那么就会每分钟定时调用sh /tmp/myTest.sh。
cron.d下面文件的格式为

minutehourdaymonthdayofweekusercommand
分钟小时日期月份星期用户命令
0-590-231-311-120-7

例如上面的例子中,* * * * *就代表每分钟执行(cron表达式,应该都不陌生,不赘述了),root代表用户。

三、被调用的脚本文件

也即上面所调用到的,放在/tmp目录下的myTest.sh(放什么目录都可以,我随便放的)

#!/bin/bash
echo "1" >> /tmp/test.txt

这里简单地输出一个1到文件中。(注:>和>>均表示输出,且均会新建不存在的文件,但>会覆盖之前的内容,>>则是追加到末尾)

四、检查脚本是否执行

查看/var/log/cron文件。
有如下输出就说明执行成功了:

Jan 31 19:00:01 master CROND[18828]: (root) CMD (sh /tmp/myTest.sh)

在这里插入图片描述

五、遇到的脚本未执行的情况

1、使用service crond status查看crond服务状态,可以使用service crond start启动crond
2、脚本下必须使用全路径,也即>> /tmp/test.txt不能简写成>> test.txt.这个是在myTest.sh中,cron脚本这里的myCronTest.sh中也是一样的,都需要使用完整的路径。
3、如果查看四中的日志,如果发现输出为如下这样,在命令最末尾掺进了^M,则是由于cron脚本文件为windows格式导致有了中文换行符。转换下脚本格式,或者删除之后重新在linux中重新新建文件即可。

Jan 31 19:00:01 master CROND[18828]: (root) CMD (sh /tmp/myTest.sh^M)
(当这样执行时,myTest.sh^M文件不存在,只存在myTest.sh文件,因此没有文件被执行)

4、查看四中的日志发现

Nov 29 20:33:01 master1 crond[91971]: (root) BAD FILE MODE (/etc/cron.d/myTest.sh)

是因为没有给正确的权限 需要给644权限
sudo chmod 644 /etc/cron.d/cronUpload.sh

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值