Linux 定时任务 cron 的时间格式、常用命令和最佳实践有哪些?
Linux 定时任务(cron)是自动化运维的重要工具,可以定期执行脚本和命令。cron 基本概念:cron 是 Linux 系统的定时任务调度器由 cron 守护进程(crond)负责执行定时任务配置文件:/etc/crontab(系统级)、/var/spool/cron/username(用户级)时间格式:分 时 日 月 周 命令时间格式说明:分(0-59):每小时的第几分钟时(0-23):每天的第几小时日(1-31):每月的第几天月(1-12):每年的第几个月周(0-7,0 和 7 都表示周日):每周的第几天特殊符号:*:匹配所有值,:分隔多个值,如 1,3,5 表示第 1、3、5-:表示范围,如 1-5 表示 1 到 5/n:表示间隔,如 */5 表示每 5 个单位常用示例:每分钟执行:* * * * * command每小时执行:0 * * * * command每天凌晨 2 点执行:0 2 * * * command每周一凌晨 3 点执行:0 3 * * 1 command每月 1 号凌晨 4 点执行:0 4 1 * * command每 5 分钟执行一次:*/5 * * * * command工作日(周一到周五)每天上午 9 点执行:0 9 * * 1-5 commandcrontab 命令:crontab -e:编辑当前用户的定时任务crontab -l:列出当前用户的定时任务crontab -r:删除当前用户的所有定时任务crontab -u username -e:编辑指定用户的定时任务(需要 root 权限)系统级定时任务:/etc/crontab:系统级定时任务配置文件/etc/cron.hourly/:每小时执行的任务目录/etc/cron.daily/:每天执行的任务目录/etc/cron.weekly/:每周执行的任务目录/etc/cron.monthly/:每月执行的任务目录环境变量:cron 任务执行时环境变量与用户登录时不同可以在 crontab 文件中定义环境变量建议在脚本中使用绝对路径可以在脚本开头 source 环境变量文件:source ~/.bashrc日志和调试:cron 日志位置:/var/log/syslog 或 /var/log/cron查看日志:grep CRON /var/log/syslog调试技巧:将输出重定向到日志文件:command >> /tmp/cron.log 2>&1发送邮件:cron 默认会将输出发送到用户邮箱最佳实践:使用绝对路径在脚本中设置正确的环境变量添加日志记录便于调试使用锁文件防止重复执行测试脚本后再添加到 cron合理设置执行时间,避免系统高峰期定期检查 cron 任务执行情况常见问题:脚本权限不足:确保脚本有执行权限(chmod +x script.sh)环境变量问题:在脚本中显式设置环境变量路径问题:使用绝对路径或切换到正确目录时区问题:确保系统时区正确cron 服务未启动:systemctl status cron 或 systemctl start cronanacron(异步 cron):用于不是 24 小时运行的系统配置文件:/etc/anacrontab适合笔记本电脑等不常开机的设备会检查上次执行时间,如果错过则补执行systemd 定时器:systemd 的定时任务替代方案配置文件:/etc/systemd/system/*.timer查看定时器:systemctl list-timers更灵活的调度选项更好的日志集成