web-dev-qa-db-ja.com

端末から特定の日時にLinuxをシャットダウンする方法は?

時間または分を指定することで、Sudo shutdownを使用してシャットダウンできるようです。

シャットダウンの日時を指定する方法はありますか?

49
Askar

これは、shutdown commandから直接実行できます。man shutdownを参照してください。

SYNOPSIS
   /sbin/shutdown [-akrhPHfFnc] [-t sec] time [warning message]

[...]

   time   When to shutdown.

したがって、たとえば:

shutdown -h 21:45

21:45にshutdown -hが実行されます。


この機能を提供しないコマンドについては、次のいずれかを試すことができます。

A.での使用

at デーモンは、まさにこれのために設計されています。 OSによっては、インストールが必要な場合があります。 Debianベースのシステムでは、これは次の方法で実行できます。

Sudo apt-get install at

atにコマンドを与える方法は3つあります。

  1. パイプする:

    $ echo "ls > a.txt" | at now + 1 min
    warning: commands will be executed using /bin/sh
    job 3 at Thu Apr  4 20:16:00 2013
    
  2. 実行するコマンドをテキストファイルに保存し、そのファイルをatに渡します。

    $ echo "ls > a.txt" > cmd.txt
    $ at now + 1 min < cmd.txt
    warning: commands will be executed using /bin/sh
    job 3 at Thu Apr  4 20:16:00 2013
    
  3. STDINからatコマンドを渡すこともできます。

    $ at now + 1 min
    warning: commands will be executed using /bin/sh
    at> ls
    

    次に、 CtrlD atシェルを終了します。 lsコマンドは1分で実行されます。

次のように、[[CC]YY]MMDDhhmm[.ss]の形式で非常に正確な時刻を指定できます

$ at -t 201403142134.12 < script.sh

これにより、2014年3月14日の21:34および12秒にスクリプトscript.shが実行されます。

B. cronの使用(ただし、これはシャットダウンには適していません)

他のアプローチは、特定の時間にタスクを実行するように設計されたcronスケジューラーを使用することです。これは通常、繰り返されるタスクに使用されますが、特定の時間を与えることもできます。各ユーザーには、どのジョブをいつ実行するかを制御する独自の「crontab」があります。 crontabの一般的な形式は次のとおりです。

*     *     *     *     *  command to be executed
-     -     -     -     -
|     |     |     |     |
|     |     |     |     +----- day of week (0 - 6) (Sunday=0)
|     |     |     +------- month (1 - 12)
|     |     +--------- day of month (1 - 31)
|     +----------- hour (0 - 23)
+------------- min (0 - 59)

したがって、たとえば、これはlsを毎日14:04に実行します。

04 14 * * * ls

特定の日付のcronjobを設定するには:

  1. crontab -eを実行して、新しいcrontabを作成します。これにより、お気に入りのテキストエディタのウィンドウが表示されます。

  2. 開いたばかりのファイルにこの行を追加します。この特定の例は、その日が金曜日の場合、2014年3月15日14:34に実行されます(つまり、複数回実行される可能性があります)。

    34 14 15 5  /path/to/command        
    
  3. ファイルを保存してエディターを終了します。

これ SO回答は、それを1回だけ実行する方法を提案していますが、使用したことがないので、保証することはできません。

79
terdon

いいえ、シャットダウンコマンドで日付を指定することはできませんが、次の2つの方法があります。

1)最も簡単なのは atコマンド を使用することです。次の例では、特定の日時にshutdown +5を実行します。

echo "shutdown +5" | at 10:05am 2019-01-19

2)計算機の使用を気にせず、たとえば24時間(24 * 60 = 1440分)でシャットダウンしたい場合で、確信がある場合システムは次の間に再起動しません:

shutdown -r +1440
26
ndemou

12:00にシステムをシャットダウンします。

$ Sudo shutdown -h 12:00

オプション:

-h, -P, --poweroff

マシンの電源を切ります。

-r, --reboot

マシンを再起動します。

-c

保留中のシャットダウンをキャンセルします。

6
Hamed Kamrava