Linux服务器定时任务依赖crond服务运行,需用crontab -e按“分 时 日 月 周 命令”格式编写,命令须用绝对路径,并配置PATH、SHELL环境变量及日志输出以确保稳定执行。
Linux 服务器定时任务主要靠 crontab 实现,核心是写对时间格式和命令路径。配置不难,但细节错一点就执行失败。
定时任务依赖后台的 cron 守护进程,得先确保它开着:
systemctl status crond(CentOS/RHEL)或 systemctl status cron(Ubuntu/Debian)systemctl start crond 并设为开机自启:systemctl enable crond
普通用户执行 crontab -e 即可编辑专属任务(无需改系统文件,更安全)。首次会提示选编辑器,选 nano 或 vim 都行。
30 2 * * * /bin/bash /home/user/backup.sh 表示每天凌晨2:30执行脚本which backup.sh 可查路径),否则 cron 找不到5个时间位从左到右分别是:分钟(0–59)、小时(0–23)、日期(1–31)、月份(1–12)、星期(0–6,0和7都代表周日)。
* 表示“任意值”,比如 * * * * * 是每分钟执行一次*/10 表示“每隔10单位”,如 */10 * * * * 是每10分钟执行一次1,15 表示“多个离散值”,如 0 1,13 * * * 是每天1点和13点整执行1-5 表示“范围”,如 0 9 * * 1-5 是工作日早上9点执行很多任务写完不执行,往往不是时间错了,而是环境或权限问题:
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
SHELL=/bin/bash
#!/usr/bin/env bash,并在脚本内 source ~/.bashrc 或直接激活环境30 2 * * * /home/user/backup.sh >> /var/log/backup.log 2>&1
$(date -d '+1 minute' +%M) $(date -d '+1 minute' +%H) * * *),验证是否触发