在 Debian(以及大多数使用 systemd 的现代 Linux 发行版)中,定时任务通常通过 systemd timer 来实现,并且可以设置为 开机自动启动。下面分步骤说明。
ps -p 1 -o comm=
输出为 systemd 即可。
例如创建一个定时任务脚本 /usr/local/bin/mytask.sh:
#!/bin/bash
echo "Task run at $(date)" >> /tmp/mytask.log
赋予执行权限:
chmod +x /usr/local/bin/mytask.sh
创建 service 文件:
sudo nano /etc/systemd/system/mytask.service
内容示例:
[Unit]
Description=My Task
[Service]
Type=oneshot
ExecStart=/usr/local/bin/mytask.sh
⚠️
oneshot表示一次性任务,对应 timer 的触发。
sudo nano /etc/systemd/system/mytask.timer
示例 1:开机后 1 分钟执行一次
[Unit]
Description=Run mytask after boot
[Timer]
OnBootSec=1min
Unit=mytask.service
[Install]
WantedBy=timers.target
示例 2:每小时执行一次
[Timer]
OnCalendar=hourly
Persistent=true
Unit=mytask.service
示例 3:每天凌晨 2 点执行
[Timer]
OnCalendar=*-*-* 02:00:00
Persistent=true
sudo systemctl daemon-reload
sudo systemctl enable mytask.timer
sudo systemctl start mytask.timer
✅ enable 的作用是:
查看 timer 是否已激活:
systemctl list-timers
查看指定 timer 状态:
systemctl status mytask.timer
journalctl -u mytask.service
journalctl -u mytask.timer
timer 和 service 放在 /etc/systemd/system/ 并以 root 启用即可。
| systemd timer | cron |
|---|---|
| 开机启动友好 | 需 crond |
| 日志集成 journal | 日志分散 |
| 支持依赖关系 | 不支持 |
systemctl enable xxx.timer # 开机启动
systemctl start xxx.timer # 当前启动
systemctl status xxx.timer # 查看状态
如果你愿意,可以把你的 具体脚本或需求 发给我,我可以帮你写一套完整的 .service + .timer 文件。