回答:
最近のUbuntuバージョンはsystemdを使用しており、1回限りのコマンド用の従来のatd
関連at
スケジューラーがインストールされていないか、1回限りのコマンドをsystemd-run
実行していない場合は 、手動でを生成するよりも簡単にスケジュールできますsystemd timer
。
systemd-run --on-calendar="2019-08-31 20:00:00 CET" /sbin/shutdown now
この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
ここにコマンドを配置できます。
at
私は、投稿時に- at
会社に認められた方法は、かもしれないが、間違いなく、一般的にはこのためのものですat
か、cron
構成管理/展開に関連する規則に応じて、。
at
パイプからコマンドを取得することもできます:echo "echo yup > $(tty)" | at now
。
一方でat
これを行うための明白な方法ですが、私はそれがとても予定のシャットダウン前に、マシンをリブートした場合、それは予定時刻に再びシャットダウンかもしれませんが、シャットダウン後も存続すると思います。したがって、bashとGNU dateを使用すると、遅延シャットダウンを使用できます。
/sbin/shutdown +$(( ( $( date -d "30 may 2019 13:15" +%s ) - $( date +%s ) ) / 60 + 1 ))
注:これは1分まで正確です。これは、スケジュールされた時間をUNIXエポックからの秒数に変換し、差を計算して分に変換し、これをシャットダウンの遅延として使用することで機能します。スケジュールされた時間が過去の場合、正しく動作しません。
より良いshutdown
コマンドを使用します。
van Smoorenburg、Upstart、およびsystemd shutdown
コマンドでは、日付を指定できません。ただし、BSD shutdown
コマンドは、シャットダウンするタイミングの仕様にある日付値をの形式で受け取りますyymmddhhmm
。これは4BSD以来ずっとそうであり、FreeBSDとOpenBSDでも同様です。NetBSDはそれをに拡張しましたccyymmddhhmm
。
noshツールセットはBSDでも使用できるため、NetBSDごとshutdown
に拡張して同じ機能をコマンドに与えましたCCYYMMDDHHMM
。また、noshツールセットはLinuxでも使用できるため、Linuxは日付を取るシャットダウンコマンドを提供します。
もちろんnoshでも動作しsystem-manager
ます。また、他のいくつかのシステムでも機能します。それはプロセス#1に信号を送信してものを制定し、同じ信号は、などの他のいくつかのシステムマネージャによって理解されsystemd
ます。
あなたはそれを使うこともできるし、それに似たツールを使うこともできる。または、他のLinux shutdown
プログラムの作者を説得して、ツールをBSDと同等の機能に拡張することもできますshutdown
。
shutdown
。noshツールセットのマニュアルページ。ソフトウェア。system-manager
。noshツールセットのマニュアルページ。ソフトウェア。shutdown
。 System Managerがマニュアルです。NetBSDマニュアルページ。2011-11-04。shutdown
。 FreeBSDシステム管理者のマニュアル。2018-01-01。shutdown
。OpenBSDマニュアルページ。2015-01-21。shutdown
コマンドに年を入力するオプションがありますが、cronは特定の時点でコマンドを1回だけ実行するために使用できます。あなたの例として、試してください
0 0 31 8 ? 2019 shutdown
注意:上記は標準のcron構文ではありません。
year
フィールドはありませんcrontab
shutdown
。これは、BSDのコマンドラインと同等ではないためです。私が別の回答で書いたように、これを望む人は、を使ってshutdown
家の中を回るのではなく、システム化された人々に数十年前の構文でツールをより有能にするよう説得してみてくださいsystemd-run
。