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 文件再删