基本使用
cron 来自希腊单词 chronos(意为「时间」)
crontab [-u user] file
crontab [-u user] [-i] { -e | -l | -r }
| | | |
| | | --------- delete user's crontab
| | -------------- list user's crontab
| ------------------- edit user's crontab
------------------------- prompt before deleting user's crontab
查看运行的 cron 作业:
$ crontab -l
编辑 cron 作业配置:
$ crontab -e
时间格式
50 19 * * * sh hello.sh >> out.txt
| | | | |
| | | | -------------------------------------- day of week (0 ~ 7)
| | | ---------------------------------------- month (1 ~ 12)
| | ------------------------------------------ day of month (1 ~ 31)
| -------------------------------------------- hour (0 ~ 23)
----------------------------------------------- minute (0 ~ 59)
符号规则:
*
:匹配所有值,
:或者,枚举-
:区间,范围/
:增量值,间隔
示例:
-
默认间隔:
# 每分钟执行一次 Command(每月的每周的每天的每小数的每分钟) * * * * * Command
-
枚举:
# 每小时的 0,15,30,45 分钟的时候执行 Command 0,15,30,45 * * * * Command
-
范围:
# 在 6 点到 18 点的 0,15,30,45 分钟的时候执行 Command 0,15,30,45 6-18 * * * Command
-
间隔:
# 每隔两天在 6 点到 18 点的 0,15,30,45 分钟的时候执行 Command 0,15,30,45 6-18 */2 * * Command # 每小时执行一次 Command * */1 * * * Command
cron 配置
主配置文件
直接修改/etc/crontab
文件:
# 使用的 shell 环境
SHELL=/bin/bash
# 引入执行命令路径
PATH=/sbin:/bin:/usr/sbin:/usr/bin
# cron 任务的输出被邮寄给 MAILTO 变量定义的用户名
# root 用户可以查看 /var/spool/mail/root
MAILTO=root
# MAILTO 为空,电子邮寄不会被寄出
# MAILTO=""
# 设置执行命令或脚本是使用的主目录
HOME=/
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
如果在/etc/crontab
文件中配置了run-parts
部分,可以在对应的目录下添加脚本来实现定时的运行
/etc/cron.d
可以在 /etc/cron.d
目录下添加不同的文件定义任务
用户配置
使用crontab -e
命令,编辑的是/var/spool/cron
下对应用户的 cron 文件
管理 cron 服务
启动 / 停止 / 重启 crontab
$ /etc/init.d/crond start
$ /etc/init.d/crond stop
$ /etc/init.d/crond restart
查看日志
$ tail -f /var/log/cron
重启后执行
@reboot /path/to/job
@reboot /path/to/shell.script
@reboot /path/to/command
注意事项
-
环境变量:在 crontab 文件中指定任务运行所需的环境变量,使用全局路径
-
邮件日志:任务调度执行完毕,系统会将任务输出信息通过电子邮件的形式发送给但其系统用户,可以忽略不重要的输出
* */1 * * * Command >/dev/null 2>&1
-
%
:%
在 crontab 中表示换行,使用是需要转义 -
cron 文件的注释符号是
#
- older
- Newer