ターミナルから特定の日時にLinuxをシャットダウンする方法は?


46

sudo shutdown時間または分を指定することでシャットダウンできるようです。

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

回答:


77

これはshutdown command、から直接実行できますman shutdown

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

[...]

   time   When to shutdown.

したがって、たとえば:

shutdown -h 21:45

shutdown -h21:45に実行されます。


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

A. atを使用する

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

sudo apt-get install at

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

  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. atSTDINからコマンドを渡すこともできます。

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

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

あなたはの形式で非常に正確な時間を与えることができる[[CC]YY]MMDDhhmm[.ss]のように、

$ at -t 201403142134.12 < script.sh

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

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

もう1つのアプローチは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を作成しますcrontab -e。これにより、お気に入りのテキストエディタのウィンドウが表示されます。

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

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

この SOの答えは、一度だけ実行する方法を示唆していますが、私はそれを使用したことがないため、保証することはできません。


2
cronでシャットダウンをスケジュールすることは、本当に悪い習慣です。突然、毎週月曜日の朝にサーバーがダウンするのはなぜだろうかと思うでしょう。
Ouki 14年

4
@Oukiすみませんが、シャットダウンにcronを使用することをお勧めする場所がわかりません。私は括弧内にそれが可能であることを述べていますが、それはお勧めしません。私たちはここで包括的な回答を好む傾向があるので、私は他の選択肢を提供したが、それらを使用するべきではないと提案しましたshutdown。でも、そのような悪い経験は気持ちがいいと思う。
テルドン

2
これは、shutdownスケジューリングとcron同じ答えを混在させているため、提案に関するものです...ワークステーションであるか、1000ユーザーのメールサーバーであるか(私の悲しい経験)は、悪い習慣の結果についての詳細です。
Ouki 14年

3
ここでオウキと一緒です。議論するときshutdown、人は含むべきではありませんcron。(ESPそれは恐ろしい考えだ理由を知ることができません誰かと。。)
リッキー・ビーム

2
私は、この答えがすでに質問で想定されている情報につながるように思われることを少し混乱しています。OPはシャットダウンの時間を指定する方法を知っているようですが、日付と時間の両方を指定する方法を知りたいようです。それはこの答えで対処されていますが、そもそもそれが追加情報であるかのように提供されています。
ウィーブル14年

24

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

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

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

2)電卓の使用を気にせず、たとえば24時間(24 * 60 = 1440分)でシャットダウンしたい場合、システムがその間に再起動しないことを確信している場合:

shutdown -r +1440

2
terdonの答えが正しいと非常に包括的なあまりにもおしゃべり(少なくとも私見)です:上記の私の答えの理由
ndemou

2
おしゃべりで役立つと包括的である場合...あなたの答えはatコマンドを説明することさえしませんでした。
アンソニー

@Anthonyこの使い方はat説明に値しないと思います。そうでないと信じているのを見ることができます。異なる心、異なる見解。
-ndemou

この答えはもはや真実ではありません。van Smoorenburg、Upstart、およびsystemd shutdownコマンドでは、日付を指定できません。しかし、noshツールセットshutdownは、長年のBSD構文をサポートしています。
JdeBP

@JdeBP:この2つの選択肢のうち、もはや真実ではないと思うものはありますか?3つのシステム(Ubuntu 18.04,16.04およびCentOS 7)で両方のコマンドをテストしたところ、正常に機能しました。あなたのコメントの残りの部分( "The van Smoorenburg ...")について、この答えがもはや真実ではないというあなたの声明の説明なのか、一般的なコメントなのかわかりません。たぶん、あなたはもう少し情報で答えを投稿すべきです。
ndemou

6

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

$ sudo shutdown -h 12:00

オプション:

-h, -P, --poweroff

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

-r, --reboot

マシンを再起動します。

-c

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


5
特定の日にシャットダウンする方法を示していないメソッド...
Askar 14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.