コマンドラインを使ってLinuxを再起動またはシャットダウンする方法

  • LinuxとmacOSシステムでは、shutdown、reboot、halt、poweroffなどのコマンドを使って、コマンドラインからコンピュータを安全にシャットダウンまたは再起動することができます。
  • これらのコマンドは、systemdベースのディストリビューションではsystemctlコマンドへのショートカットであり、System V initベースのシステムとの互換性を確保しています。
  • shutdownコマンドを使用すると、シャットダウンまたは再起動のスケジュールを設定したり、ログインしているユーザーにメッセージを送信したり、コマンドラインオプションを使ってスケジュールされたアクションをキャンセルしたりすることができます。

一から始めたいですか? コマンドラインからLinuxまたはmacOSコンピュータをクリーンかつ安全に再起動またはシャットダウンする方法をご紹介します。

Linuxのシャットダウンコマンドにはどのようなものがありますか?

再起動または完全シャットダウンが必要な場合があります。 GUIのないサーバーで作業している場合や、リモートコンピュータへのSSHセッションを使用している場合、コマンドラインが唯一の選択肢です。 LinuxやmacOSなどのUnix系システムでは、コマンドラインからシステムをシャットダウンまたは再起動するためのコマンドがいくつか用意されています。

使用できるコマンドは以下の通りです。

  • shutdown
  • reboot
  • halt
  • poweroff

これらのコマンドのマニュアルページを見ると、混乱するかもしれません。選択するコマンドラインオプションによっては、これらのコマンドはすべてシャットダウン、再起動、システムの停止を実行できます。実際、reboothaltpoweroffのマニュアルページにはまったく同じ情報が記載されています。

その背景とは?

その答えは、由緒あるSystem V initシステムに取って代わったsystemdブートストラップシステムにあります。 Linuxの世界では、Fedoraが2011年にsystemdの使用を開始しました。それ以来、多くのディストリビューションで採用されています。 DebianとUbuntuは2015年にsystemdに切り替えました。

systemdベースのディストリビューションでは、shutdownreboothaltpoweroffコマンドは、systemctlコマンドを指すショートカットとして機能します。これらのコマンドを残すことで、System V initベースのディストリビューションとの一定の互換性が確保されます。つまり、シェルスクリプト(とハードコアなSystem Vシステム管理者)は、systemdディストリビューションが動作するコンピュータに移行しても、倒れることはありません。

Linuxでshutdownを使用する

マルチユーザーシステムをシャットダウンまたは再起動するには、事前に計画を立てる必要があります。シャットダウンまたは再起動を行うタイミングを決め、他のシステムユーザーにシャットダウンがいつ行われるかを警告する必要があります。それが自分のコンピュータで、自分だけが使用している場合は、はるかに簡単です。

これらのコマンドを実行するには、sudoグループに属している必要があります。つまり、スーパーユーザーの権限を持ち、sudoコマンドを使用できる必要があります。発行したコマンドがすぐに有効になり、他のログインユーザーに影響を与えない場合は、sudoを使用する必要はありません。これらのコマンドのいずれかを使用しようとしてコマンドが拒否された場合は、sudoを付けて再試行してください。

shutdownコマンドは、デフォルトでは、すべてのプロセスがクリーンに停止され、すべてのファイルシステムが同期され、すべてのCPUアクティビティが停止していることを確認します。これが「halt」状態です。その後、ハードウェアに電源を切るメッセージを送信します。もちろん、これがシャットダウンまたは「poweroff」状態です。

shutdownに時間文字列やログインユーザーに送信してシャットダウンを警告するメッセージなど、いくつかのパラメータを渡すのが一般的です。15分後にシャットダウンをスケジュールしてみましょう。shutdown、スペース、+15、スペース、そしてユーザーに送信するメッセージを入力します。

shutdown +15 Shutting down in 15 minutes!

使用した時間文字列は+15で、現在から15分を表しています。+は省略可能です。15と入力することもできました。

シャットダウンがスケジュールされ、いつ実行されるかが確認されたという応答が返されます。ログインしているユーザーには、私たちが提供したメッセージが届きます。

シャットダウンをキャンセルするには、-c(キャンセル)オプションを使用します。

shutdown -c

シャットダウンがキャンセルされたという通知は届きませんが、ログインしているユーザーには通知が届きます。

時間文字列を指定しないと、シャットダウンは現在から1分後にスケジュールされます。時間文字列を指定しない場合、ログインしているユーザーにメッセージを送信することはできません。

shutdown

1分も待てない場合は、nowを時間文字列として使用すると、シャットダウンがすぐに有効になります。nowを使用することは、+0を使用することと同じです。

時間文字列は、23:00などの設定時刻にすることができます。HH:MMの形式に従う必要があり、24時間表記である必要があります。システムがダウンする5分前に、新しいログインは禁止されます。

shutdownのデフォルトのアクションでは、コンピュータが停止状態になり、その後電源オフ状態になります。他のコマンドラインオプションを渡すことで、この動作をオーバーライドできます。

  • -H(停止)オプションは、コンピュータを停止状態にしますが、ハードウェアに電源を切るようには指示しません。
  • -P(電源オフ)はデフォルトのアクションです。コンピュータは停止状態になり、その後電源が切れます。
  • -r(再起動)オプションは、コンピュータを停止状態にしてから再起動します。
  • -h(停止と電源オフ)オプションは-Pと同じです。-h-Hを一緒に使用すると、-Hオプションが優先されます。
  • -c(キャンセル)オプションは、スケジュールされたシャットダウン、停止、または再起動をキャンセルします。

再起動をスケジュールした例を次に示します。

shutdown -r 08:20 System rebooting at 08:20

reboot、halt、poweroffコマンド

これらのコマンドは、名前が示すアクションを実行します。しかし、それぞれのコマンドはコマンドラインオプションを受け入れ、いずれかを再起動、停止、または電源オフを実行させることができます。しかし、なぜ混乱させるのでしょうか? これらのコマンドは、そのままの意味で使用するのが最善です。

今すぐ再起動したい場合は、rebootを使用します。今すぐ電源を切りたい場合は、poweroffを使用し、今すぐシステムを停止したい場合は、haltを使用します。

reboot

halt

poweroff

これらのコマンドはすぐに有効になります。これらのコマンドのいずれかが拒否された場合は、前にsudoを付けます。ただし、拒否されるのは通常、オフラインにしようとしているシステムに他のユーザーがログインしているためであることに注意してください。

自分に適したコマンドはどれ?

マルチユーザー環境では、shutdownを使用してこれらのアクションを実行すると、より多くの制御が可能になります。シャットダウンと再起動をスケジュールし、ブロードキャストメッセージでユーザーに警告する機能は、このような場合に非常に役立ちます。シングルユーザーコンピュータの場合、rebootpoweroffで十分でしょう。