linux定时任务核心是crontab,需确保crond服务运行,用crontab -e编辑、-l查看、-r删除任务,时间字段为分时日月周,命令须用绝对路径并重定向输出。

Linux 中配置定时运维任务,核心就是用好 crontab 工具。它不复杂,但细节决定成败——写错一个空格、漏掉用户权限、路径没写全,任务就静默失败。
确认 cron 服务已运行
crontab 依赖后台守护进程 crond,必须先确保它在运行:
- 查看状态:
systemctl status crond(CentOS/RHEL)或systemctl status cron(Ubuntu/Debian) - 如未启动,执行:
systemctl start crond或systemctl enable --now crond(开机自启+立即启动)
编辑和管理自己的定时任务
普通用户用以下命令操作自身任务,无需 root 权限(除非要改别人):
-
crontab -e:打开编辑器(首次会提示选 nano/vim;新手选 nano,保存按Ctrl+O,退出按Ctrl+X) -
crontab -l:查看当前已设置的所有行 -
crontab -r:彻底删除全部任务(⚠️不可撤销,慎用)
注意:每行一条任务,格式固定为 5个时间字段 + 1个命令,用空格分隔,例如:
掌握时间字段含义和常用写法
顺序是:分钟 小时 日 月 周 命令,取值范围如下:
- 分钟:
0–59(如30表示第30分) - 小时:
0–23(0是凌晨0点) - 日:
1–31 - 月:
1–12或jan–dec - 周:
0–7(0和7都是周日;1–5是周一到周五)
常用组合示例:
-
0 3 * * *→ 每天凌晨3点整 -
*/10 * * * *→ 每10分钟一次(注意:不是* */10,那会每分钟执行!) -
0 8 * * 1-5→ 工作日早上8点 -
30 4 1,15 * *→ 每月1日和15日凌晨4:30
让脚本真正可靠执行的要点
很多任务看似配好了却不运行,问题常出在环境上:
-
写绝对路径:命令如
date、mysqldump要用/bin/date、/usr/bin/mysqldump,避免 PATH 不一致 -
脚本加可执行权限:
chmod +x /home/user/backup.sh -
指定 shell 解释器:推荐写成
/bin/bash /home/user/backup.sh,不依赖默认 shell -
重定向输出便于排查:加
> /var/log/backup.log 2>&1把标准输出和错误都记下来
完整一行示例:
0 2 * * * /bin/bash /home/admin/daily_backup.sh >> /var/log/backup.log 2>&1











