在 Linux 中,Shell 脚本定时执行最常用的方式是 crontab。下面从基础到进阶给你一个完整说明。
crontab 定时执行(最常用)crontab -e
如果是第一次使用,会让你选择编辑器(推荐 nano 或 vim)。
* * * * * command
│ │ │ │ │
│ │ │ │ └── 星期几 (0-7, 0和7都是星期天)
│ │ │ └──── 月份 (1-12)
│ │ └────── 日期 (1-31)
│ └──────── 小时 (0-23)
└────────── 分钟 (0-59)
* * * * * /home/user/test.sh
0 * * * * /home/user/test.sh
0 2 * * * /home/user/test.sh
0 3 * * 1 /home/user/test.sh
*/5 * * * * /home/user/test.sh
chmod +x /home/user/test.sh
0 2 * * * /home/user/test.sh >> /home/user/log.txt 2>&1
>>:追加日志2>&1:错误输出也写入日志crontab -l
crontab -r
/etc/crontab
格式略有不同(需要指定用户):
0 3 * * * root /home/user/test.sh
systemd timer(现代 Linux)适合需要秒级精度或复杂依赖的场景。
# /etc/systemd/system/mytask.timer
[Unit]
Description=Run my script every hour
[Timer]
OnCalendar=hourly
[Install]
WantedBy=timers.target
# /etc/systemd/system/mytask.service
[Unit]
Description=My Script
[Service]
ExecStart=/home/user/test.sh
启动:
systemctl daemon-reload
systemctl enable --now mytask.timer
原因通常是:
✅ 解决:
#!/bin/bash
cd /home/user
./test.sh
或在 crontab 中指定 PATH:
PATH=/usr/bin:/bin
| 场景 | 推荐方式 |
|---|---|
| 普通定时任务 | ✅ crontab |
| 系统服务级 | systemd timer |
| 一次性任务 | at |
如果你愿意,可以把你的 脚本内容 + 想执行的时间 发给我,我可以直接帮你写好 crontab 配置 ✅
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。