我知道您可以通过 安排在特定时间关闭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