使用 systemd-shutdownd 计划

使用 systemd-shutdownd 计划

我有多个 Redhat 和 CentOS 7 服务器,仅在工作时间使用。我正在考虑使用 systemd-shutdownd 服务在工作日下午 6-30 点关闭每台机器。

Systemd 似乎是比 cron 作业更干净的解决方案。

谷歌显示有一个该服务使用的时间表文件,但我还没有找到如何实现它。

另外,我想要一种方法来停止自动断电,以防我在某一天工作到很晚。

答案1

CentOS 7 有systemdinit 系统。

systemd有一个很好的功能,称为timer.定时器就像服务一样,旨在在特定时间启动服务。systemd通过调用服务关闭系统systemd-poweroff。所以需要这样写systemd-poweroff.timer

$ cat /etc/systemd/system/systemd-poweroff.timer
[Unit]
Description=Poweroff every work day
# Call necessary service
Unit=systemd-poweroff.service

[Timer]
# Power off in working days at 23:00
OnCalendar=Mon,Tue,Wed,Thu,Fri *-*-* 23:00:00

[Install]
WantedBy=timers.target

需要systemctl enable systemd-poweroff.timer启用systemctl start systemd-poweroff.timer和运行计时器。之后,计时器将启动:

$ systemctl list-timers
NEXT                         LEFT          LAST PASSED UNIT                         ACTIVATES
Thu 2018-04-19 19:39:36 MSK  14min left    n/a  n/a    systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service
Thu 2018-04-19 23:00:00 MSK  3h 34min left n/a  n/a    systemd-poweroff.timer       systemd-poweroff.service

2 timers listed.

Pass --all to see loaded but inactive timers, too.

如果你想在特定的一天禁用计时器,那么在普通的 systemd 服务的情况下是可能的:

# systemctl stop systemd-poweroff.timer
# systemctl list-timers
NEXT                         LEFT       LAST PASSED UNIT                         ACTIVATES
Thu 2018-04-19 19:39:36 MSK  12min left n/a  n/a    systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service

1 timers listed.
Pass --all to see loaded but inactive timers, too.

相关内容