在特定日期关闭

在特定日期关闭

我知道您可以通过 安排在特定时间关闭shutdown -h 21:45,并且您不应该使用 crontab 来执行此类操作,因为它们具有重复性。如何安排特定时间的关闭日期比如8月31日晚上20:00?

答案1

at命令用于安排一次性的未来执行。

例如

% at 8pm Aug 31
at> echo hello
at> <EOT>
job 161 at Sat Aug 31 20:00:00 2019

(“<EOT>”是通过按 control-D 产生的)

% atq
161     Sat Aug 31 20:00:00 2019 a sweh

你可以把你的shutdown命令放在这里。

答案2

虽然at这是执行此操作的明显方法,但我认为它会在关闭后继续存在,因此如果机器在计划关闭之前重新启动,它可能会在计划时间再次关闭。因此,使用 bash 和 GNU date 我们可以使用延迟关闭。

/sbin/shutdown +$(( ( $( date -d "30 may 2019 13:15" +%s ) - $( date +%s ) ) / 60 + 1 ))

注意:这仅精确到一分钟。它的工作原理是,将计划时间转换为自 UNIX 纪元以来的秒数,计算差值,转换为分钟,然后将其用作关闭延迟。如果预定时间已经过去,它将无法正常工作。

答案3

最新的 Ubuntu 版本使用 systemd,并且当一次性命令的传统调度程序atd和关联调度程序未安装或未运行时at可以安排一次性命令systemd-run 这比手动生成要容易一些systemd timer:

 systemd-run --on-calendar="2019-08-31 20:00:00 CET" /sbin/shutdown now

答案4

仅在今年运行该作业:

0 20 31 8 * test $(/bin/date +\%Y) = "2019" && /sbin/shutdown now

每年运行该作业:

0 20 31 8 * /sbin/shutdown now

相关内容