Skip to content

systemd 定时任务与服务清理 ​

完整移除一个已部署的 systemd 定时任务(timer + service)的步骤,以一个 meeting-reminder 定时提醒任务为例。暂时停用只需第 1 步;彻底移除按全文执行。定时任务的基础配置方法见 Linux 定时任务:cron 与 systemd timer。

1. 停止并禁用定时器和服务 ​

bash
# 停止定时器
sudo systemctl stop meeting-reminder.timer

# 禁用定时器(防止开机自启)
sudo systemctl disable meeting-reminder.timer

# 停止并禁用服务
sudo systemctl stop meeting-reminder.service
sudo systemctl disable meeting-reminder.service

2. 确认已停止 ​

bash
sudo systemctl status meeting-reminder.timer   # 应显示 inactive
sudo systemctl status meeting-reminder.service
sudo systemctl list-timers                     # 列表中不应再有 meeting-reminder

3. 重载配置并清理失败状态 ​

bash
sudo systemctl daemon-reload
sudo systemctl reset-failed

4. 删除相关文件 ​

bash
sudo rm /etc/systemd/system/meeting-reminder.service
sudo rm /etc/systemd/system/meeting-reminder.timer
sudo rm /usr/local/bin/send_meeting_reminder.py   # 可选:任务脚本
sudo rm /var/log/meeting-reminder.log             # 可选;含历史记录,按需保留
sudo systemctl daemon-reload

5. 验证清理完成 ​

bash
sudo systemctl list-unit-files | grep meeting-reminder
sudo systemctl list-timers

一键清理 ​

bash
sudo systemctl stop meeting-reminder.timer meeting-reminder.service
sudo systemctl disable meeting-reminder.timer meeting-reminder.service

sudo rm -f /etc/systemd/system/meeting-reminder.service \
           /etc/systemd/system/meeting-reminder.timer \
           /usr/local/bin/send_meeting_reminder.py

sudo systemctl daemon-reload
sudo systemctl reset-failed

重新启用 ​

将来需要重新启用时,恢复文件后执行:

bash
sudo systemctl daemon-reload
sudo systemctl enable meeting-reminder.timer
sudo systemctl start meeting-reminder.timer
sudo systemctl enable meeting-reminder.service

要点 ​

  • 顺序很重要:先 stop/disable,再删文件,最后 daemon-reload;删完文件不 reload,systemd 仍认为单元存在
  • reset-failed 清掉失败计数,否则状态里可能残留 failed 记录
  • 想保留「以后还能一键恢复」的退路,先备份 service/timer 文件再删
最近更新

基于 VitePress 构建