cron是Linux中用于定时执行任务的守护进程,通过crontab命令管理;每行任务由分钟、小时、日、月、星期和命令六个字段组成,支持*、/、,、-等符号设置灵活时间规则;使用crontab -e编辑、-l查看、-r删除任务,建议用绝对路径并重定向输出便于调试,确保脚本有执行权限且cron服务正常运行。
在Linux中,cron是一个用于执行定时任务的守护进程。你可以通过crontab命令来添加、编辑或删除定时任务,适用于定期备份、日志清理、脚本自动运行等场景。
理解crontab文件格式
cron任务的每一行代表一个计划任务,由6个字段组成(前5个定义时间,第6个是执行的命令):
分钟 小时 日 月 星期 命令
- 分钟:0 - 59
- 小时:0 - 23
- 日:1 - 31
- 月:1 - 12
- 星期:0 - 7(0和7都表示周日)
- 命令:要执行的具体命令或脚本路径
例如:
30 4 * * 1 /home/user/backup.sh
表示每周一凌晨4:30执行backup.sh脚本。
编辑和管理cron任务
使用以下命令编辑当前用户的cron任务列表:
crontab -e
首次运行会提示选择编辑器(如nano或vim)。保存后,cron会自动加载新配置。
- 查看已有任务:crontab -l
- 删除所有任务:crontab -r(谨慎使用)
- 编辑特定用户任务(需root权限):crontab -u username -e
常用时间表达式示例
灵活使用特殊符号可以简化配置:
- *:代表任意值。如 * 在“分钟”位表示每分钟。
- /:表示间隔。如 */10 在“分钟”位表示每10分钟。
- ,:指定多个值。如 1,3,5 在“星期”位表示周一、周三、周五。
- -:表示范围。如 9-17 在“小时”位表示9点到17点。
常见例子:
# 每天凌晨2点执行
0 2 * * * /scripts/cleanup.sh
# 每5分钟检查一次服务状态
*/5 * * * * /scripts/check_service.sh
# 工作日上午9点发送提醒
0 9 * * 1-5 echo "Start work!" | mail -s "Reminder" user@example.com
注意事项与调试技巧
cron环境变量有限,建议在脚本中使用绝对路径。
- 确保脚本有可执行权限:chmod +x script.sh
- 重定向输出便于排查问题:
* * * * * /path/to/script.sh > /tmp/cron.log 2>&1 - 检查系统cron服务是否运行:sudo systemctl status cron(或crond)
- 邮件通知需要配置本地邮件服务,否则输出可能丢失
基本上就这些。设置完记得保存并验证日志输出,确保任务按预期运行。