项目部门最近提出一个奇怪的需求,想做半夜鸡叫,就是让网关在每天凌晨2点的时候,重启一次。实现这个功能方法有很多种,这次使用systemctl的timer功能来做这件事情,这么做一来不用写一行代码,而且还不用安装任何软件,实在是太好了。具体实现也非常简单:
1. 写一个test.service文件,内容如下
[Unit]
Description=test service
[Service]
Type=simple
ExecStart=/sbin/reboot
[Install]
WantedBy=multi-user.target
将test.service放到/etc/systemd/system下
关注:ExecStart = /sbin/reboot,就是重启功能
2.创建test-daily.timer文件,内容如下:
[Unit]
Description=Run oneshot service periodically
[Timer]
Unit=test.service
OnCalendar=Mon..Sun 02:00:00
[Install]
WantedBy=timers.target
关注:[Timer]中Unit和OnCalendar,unit表示定时服务调用哪个service文件,这里的话,就是调用前面的test服务。OnCalendar表示调用的时间,这里设置为周一到周日,每天凌晨2点。
将test-daily.timer放到/etc/systemd/system中。
然后systemctl enable --now test-daily.timer
之后,每天的2点钟,网关就会半夜鸡叫了。
如果要查看当前时间,过多久哪些timer会触发,调用:systemctl list-timers