使用Linux的Crontab执行定时任务

首先说说cron,它是一个linux下的定时执行工具。

根用户以外的用户可以使用 crontab 工具来配置 cron 任务。
所有用户定义的 crontab 都被保存在 /var/spool/cron 目录中,并使用创建它们的用户身份来执行。
要以某用户身份创建一个 crontab 项目,登录为该用户,然后键入 crontab -e 命令来编辑该用户的 crontab
该文件使用的格式和 /etc/crontab 相同。当对 crontab 所做的改变被保存后,该 crontab 文件就会根据该用户名被保存,并写入文件 /var/spool/cron/username 中。
cron 守护进程每分钟都检查 /etc/crontab 文件、etc/cron.d/ 目录、以及 /var/spool/cron 目录中的改变,如果发现了改变,它们就会被载入内存。
这样,当某个 crontab 文件改变后就不必重新启动守护进程了。


CentOS7安装crontab:

1
yum install crontabs

常用操作:

  • 查看状态:
    systemctl status crond
  • 启动:
    systemctl start crond
  • 停止:
    systemctl stop crond
  • 重启:
    systemctl restart crond
  • 重载配置:
    systemctl reload crond

使用示例:

每一小时执行myscript.php:

1
2
# crontab -e
00 * * * * /usr/local/bin/php /home/john/myscript.php

下面的例子是使用CURL访问URL来每5分执行PHP脚本:

1
*/5 * * * * /usr/bin/curl -o temp.txt http://www.9iqu.cn/myscript.php

crontab 参数:

  • -e 编辑该用户的计时器设置。
  • -l 列出该用户的计时器设置。
  • -r 删除该用户的计时器设置。
  • -u <用户名称> 指定要设定计时器的用户名称。

crontab 格式:

分钟 小时 星期 执行命令
* * * * * *
  • 第1列表示分钟1~59 每分钟用*或者 */1表示
  • 第2列表示小时1~23(0表示0点)
  • 第3列表示日期1~31
  • 第4列 表示月份1~12
  • 第5列标识号星期0~6(0表示星期天)
  • 第6列要执行的命令

记住几个特殊符号的含义:
“*”代表取值范围内的数字,
“/”代表”每”,
“-”代表从某个数字到某个数字,
“,”分开几个离散的数字

crontab 文件的一些例子:

  • 每晚的21:30重启apache:
    30 21 * * * /usr/local/etc/rc.d/lighttpd restart
  • 每月1、10、22日的4 : 45重启apache:
    45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
  • 每周六、周日的1:10重启apache:
    10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
  • 每天18:00至23:00之间每隔30分钟重启apache:
    0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
  • 晚上11点到早上7点之间,每隔一小时重启apache:
    0 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
  • 每月的4号与每周一到周三的11点重启apache:
    0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart

评论