在排查 certbot 不自动更新证书问题时,第一次知道 systemd timer 也能做为系统定时任务的管理工具。但是他与之前熟知的 crontab 有什么区别呢?
列举一下 systemd timer 的优势
- 支持微妙、毫秒、秒级的定时任务;而 crontab 只能支持到分钟级
- 上次任务没有执行完时,不会重复执行定时任务;而 crontab 需要手动处理单例问题
- 支持只执行一次的定时点的计划任务
- 方便的指定运行用户。
两个配置文件
每一个“.timer”文件必须有一个对应的“.service”文件存在,这样计时器才有意义。默认情况下,如果Timer和Service的文件名(不包含扩展名)相同,则“.timer”文件控制“.service”文件的运行,比如“foo.timer”和“foo.service”
常用操作
由于 timer 也是一个 systemd unit,所以操作基本跟 service 一样:
- systemctl start [UnitName] //启动单元
- systemctl enable [UnitName] //开机自动执行该单元
- systemctl list-timers //查看所有已启动的timer
- systemctl stop [UnitName] //关闭单元
- systemctl disable [UnitName] //关闭开机自动执行
参考
- https://www.junmajinlong.com/linux/systemd/systemd_timer/
- https://m.toutiao.com/is/BRdmDwh/ - 使用Systemd配置定时任务
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式