在特定日期關閉

在特定日期關閉

我知道您可以透過 安排在特定時間關閉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

相關內容