






















* * * * * 命令
分 时 日 月 周 要执行的命令
每周的第几天执行
(0和7都表示周日)
* * * * * /path/to/script.sh
每分钟都会执行一次,常用于测试
0 * * * * /path/to/script.sh
每小时的第0分钟执行,如 1:00, 2:00, 3:00
0 8 * * * /path/to/script.sh
每天上午8:00执行,适合日常任务
0 2 * * * /path/to/backup.sh
每天凌晨2:00执行,适合备份任务
0 9 * * 1 /path/to/weekly-report.sh
每周一上午9:00执行,适合周报生成
0 0 1 * * /path/to/monthly-task.sh
每月1号凌晨执行,适合月度任务
*/5 * * * * /path/to/monitor.sh
每5分钟执行一次,适合监控脚本
*/30 * * * * /path/to/sync.sh
每30分钟执行一次,适合同步任务
0 * * * 1-5 /path/to/workday-task.sh
周一到周五每小时执行,适合办公自动化
30 9,14,18 * * * /path/to/reminder.sh
每天9:30、14:30、18:30执行
*/15 9-17 * * 1-5 /path/to/status-check.sh
工作日9-17点每15分钟执行
0 0 1 1,4,7,10 * /path/to/quarterly.sh
每季度第一天执行(1月、4月、7月、10月)
0 0 1 1 * /path/to/yearly-cleanup.sh
每年1月1日执行年度清理
15,45 */2 * * * /path/to/complex-task.sh
每2小时的第15分钟和45分钟执行
0 2 * * * /path/to/backup.sh >> /var/log/backup.log 2>&1
执行备份并记录日志,包含错误信息
0 3 * * * cd /app && /usr/bin/python3 script.py
切换到指定目录后执行Python脚本
0 2 * * * mysqldump -u root -p database_name > /backup/db_$(date +\%Y\%m\%d).sql
每天凌晨2点备份MySQL数据库
0 1 * * 0 find /var/log -name "*.log" -mtime +30 -delete
每周日凌晨1点删除30天前的日志文件
*/10 * * * * cd /path/to/repo && git pull origin main
每10分钟自动拉取Git仓库更新
*/5 * * * * top -bn1 | grep "Cpu(s)" >> /var/log/cpu_usage.log
每5分钟记录CPU使用率
0 9 * * * openssl x509 -in /etc/ssl/cert.pem -noout -checkend 2592000
每天检查SSL证书是否即将过期
*/2 * * * * curl -f http://localhost:8080/health || echo "API Down" | mail -s "Alert" [email protected]
每2分钟检查API状态,异常时发邮件
0 4 * * * docker restart $(docker ps -q --filter "status=exited")
每天凌晨4点重启已停止的Docker容器
crontab -e # 编辑当前用户的crontab
crontab -l # 查看当前crontab
crontab -r # 删除当前crontab
基本的crontab管理命令
sudo crontab -u username -e # 编辑指定用户的crontab
sudo crontab -u username -l # 查看指定用户的crontab
管理其他用户的定时任务
0 2 * * * /path/to/script.sh >> /var/log/cron_script.log 2>&1
将标准输出和错误都重定向到日志文件
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
0 2 * * * /path/to/script.sh
在crontab中设置环境变量
0 * * * * flock -n /tmp/script.lock -c '/path/to/script.sh'
使用文件锁防止脚本重复执行
# 检查cron服务状态
systemctl status cron
# 查看cron日志
tail -f /var/log/cron
调试定时任务的常用方法
@reboot /path/to/startup.sh # 系统启动时执行
@yearly /path/to/yearly.sh # 每年执行
@monthly /path/to/monthly.sh # 每月执行
@weekly /path/to/weekly.sh # 每周执行
@daily /path/to/daily.sh # 每天执行
@hourly /path/to/hourly.sh # 每小时执行
使用特殊字符串简化时间表达式
# 避免在系统繁忙时执行
5 2 * * * /path/to/heavy-task.sh
# 分散执行时间避免同时运行多个任务
7 3 * * * /path/to/task1.sh
13 3 * * * /path/to/task2.sh
合理安排任务执行时间
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。