本内容来自:https://gairuo.com
Cron 表达式,是应用在 Unix 和类 Unix 操作系统之中,让脚本、任务定时进行周期性重复的执行。Cron 表达式有差丰富的表达能力,能够适应各种时间表达需求。本页整理了一些基本语法和常用样例,供大家参考。
共 7 位,最后一位可选,可以不写,至少 6 位,从左到右各位置分别是:
支持的符号
# 格式是:分 时 日 月 星期 要运行的命令
# week (0 - 6) = sun,mon,tue,wed,thu,fri,sat
# 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,...,sat
# | | | | |
# * * * * * user-name command to be executed
# 编辑修改,centOS 可用 vi /etc/crontab,i 进入编辑状态,:q 退出 :wq 保存退出
sudo nano /etc/crontab
# 监控日志 cron_log 手动创建
*/1 * * * * /bin/date >> /home/cron_log/log_$(date +\%Y-\%m\%d-\%H\%M)
# 生效一下
crontab /etc/crontab
# 看到的生效的
crontab -l
# 观察执行情况
tail -f /var/log/cron
# 查看最近的 crontab 执行情况
tail -f /var/spool/mail/root
# 其他的与 MAC 差不多,不累述
执行命令行示例:
# 执行 PHP 脚本:
/usr/bin/php /home/username/public_html/cron.php
# 执行 Python 脚本:
/home/miniconda3/envs/my_env/bin/python /home/do.py
# 执行 MySQL dump 备份:
mysqldump -u root -pPASSWORD database > /root/db.sql
# 获取 URL 信息:
/usr/bin/wget --spider "http://www.domain.com/cron.php"
Windows 设置定时任务
不支持,可以使用 我的电脑 - 右键‘管理’ - 任务计划程序 进行操作。
Mac 设置定时任务
# 查看是否启动
sudo launchctl list | grep cron
# 如无文件,创建一个
sudo touch /etc/crontab
vi /etc/crontab
crontab /etc/crontab
# 状态操作
sudo /usr/sbin/cron start | restart | stop
# 查看已有任务列表
sudo crontab -l
# 编辑任务
sudo crontab -e
# 保存并退款 esc,wq!保存,目测即可生效
# 删除 crontab 文件
sudo crontab -r
# 不执行(如:python)可能要增加 cron 的 Full Disk Access 权限
# System Preferences > Security & Privacy > Privacy > Full Disk Access:
# command+shift+G GOTO: /usr/sbin/cron, 选择 cron
# 可检查是否文件权限问题
cd /Users/gai/Documents/Dev/bin/
chmod +x auto_run.sh
crontab 的文件格式:
分 时 日 月 星期 要运行的命令
* 第1列分钟0~59
* 第2列小时0~23(0表示子夜)
* 第3列日1~31
* 第4列月1~12
* 第5列星期0~7(0和7表示星期天)
* 第6列要运行的命令
脚本命令中带参数写法:
# 时间参数会解析成 2019-0911-2243,多条命令用 & 连接
15 11 * * * touch "/tmp/task-$(date +\%Y-\%m\%d-\%H\%M).sql"
# 每分钟会在文档里增加一条时间记录
*/1*/1 * * * * /bin/date >> /Users/hui/Downloads/time.txt
# 如执行脚本
*/1 * * * * /bin/sh /Dev/bin/auto_run.sh
# 如 查看 crontab 环境变量
* * * * * env >> /Users/gai/Downloads/envs.txt
如果 cron 任务有错误,系统会发信给本机 /var/mail/$user
,打开终端会看到 You have new mail.
,输入 mail
可查看,阅读完后删除 $user 文件即可。
更多: https://www.jianshu.com/p/7ecf40421cf2
在 JAVA 中的应用:
@Component
public class ScheduleTask {
// 每天5点半
@Scheduled(cron = "0 30 5 * * ?")
JavaScript: