Table of Contents

使用Cron实现定时自动执行任务

Cron是负责执行的服务
Crontab是配置Cron的工具


日志

查看Cron的Log

grep CRON /var/log/syslog

如果在Log中看到输出是:

(CRON) info (No MTA installed, discarding output)

那么可以丢弃脚本的输出:不需要的Log就这样丢掉

xxx >/dev/null 2>&1

重要的Log,在sh脚本里面,写入到Log文件里面

时间配置

要注意主机的时区,根据时区设定自己想要的时间(因为云主机一般和自己不在一个时区)。看这里:时间配置

crontab -l # 列出当前的配置的任务
crontab -e # 编辑

主要的配置格式是:

* * * * * command

5个位置的配置,决定了自动执行的时间
匹配任意数字:*
每隔N才执行:*/N
固定在N执行:N
指定范围:A,B 或者 A-B

# 每1分钟执行一次myCommand
* * * * * myCommand

# 每小时的第3和第15分钟执行
3,15 * * * * myCommand

# 在上午8点到11点的第3和第15分钟执行
3,15 8-11 * * * myCommand

# 每隔两天的上午8点到11点的第3和第15分钟执行
3,15 8-11 */2  *  * myCommand

# 每周一上午8点到11点的第3和第15分钟执行
3,15 8-11 * * 1 myCommand

执行命令

运行的时候,要加上bash,直接写xxx.sh是不行的,要写/bin/bash xxx.sh

服务状态

和Apache一样,可以这样查看

sudo service cron status

脚本权限

要注意权限,自己的定时任务,自己要有执行权限

环境变量

cron执行的时候,可能会缺失一些环境变量

  1. 可以通过命令引入系统的环境变量
  2. 或者,直接所有命令都写绝对路径

外链资料