このページではLinuxのシャットダウンと再起動の方法をお伝えする。
3分でわかるように、コマンドや仕組みも含めてご紹介するので参考にしてほしい。
目次
Linuxのシャットダウンと再起動
シャットダウン
シャットダウンとはシステムを終了させ、電源オフの状態にすることだ。これはご存知の通り、Linuxに限らない。
現代のコンピュータシステムは複雑になっており、正しい手順で終了しなければならない。もし急に電源をオフ(電源ボタンを5秒間押すなど)するとシステムファイルの破損や、ハードウェアの故障が起きる場合がある。
そこで、「シャットダウン」をする。
- 具体的には作業中のファイルを終了させ
- メモリの内容をディスクに同期
- ネットワークおよび周辺機器の切断
などのもろもろの処理をしてから、電源をオフにする。
もし停電などで突然電源が落ちるなど、異常終了した場合起動時にファイルシステムのチェックなどがかかる。
再起動
これもシステムに関係なく普遍的な概念だ。
システムの異常で突如再起動する場合も含まれるが、基本的にはシャットダウンの手順を踏んだあとに、自動的に起動するようにすることを再起動という。
昔は新しいソフトウェアをインストールするときに再起動していたが、最近はカーネル(Linuxのコア部分)に関しての更新がない限り、再起動する必要はほとんどない。
再起動するとメモリの中身がクリアされるので、「困ったときの再起動」は今でも有効だ。
シャットダウンコマンド
shutdownはシステムを安全に終了させるためのコマンドだ。
ログインしている全てのユーザにシステムが終了する旨が通知することも可能であり、即時シャットダウン開始もできる。
まずは次のコマンドをそのまま覚えてしまおう。
# shutdown -h now
今すぐにシャットダウンするためのコマンドだ。rootユーザになって、このコマンドを叩けばシャットダウンされる。
もう少し詳しく
シャットダウンコマンドは次のように色々なオプションなどと一緒に使える。
$ shutdown [ -t sec ] [-arkhcfF ] time [ message ] [now]
-a | /etc/shutdown.allow を使う。 |
-t sec | 警告シグナルを送ってからシャットダウンするまえに sec 秒間待つ。 |
-k | 実際にはシャットダウンを行なわない。 ログイン中のユーザ全員へのメッセージ送付のみを行なう |
-r | 再起動する。 |
-h | シャットダウン後システムを停止する。 |
-n | [使うべきでない] initにシャットダウンを依頼するのではなく、 自力でシャットダウンを行う。 このオプションの使用はなるべく避けること。 望んだ結果が得られるとは限らない。 |
-f | リブート時に fsck を行なわない。 |
-F |
リブート時に必ず fsck を行なう。 |
-c | 現在実行中のシャットダウンをキャンセルする。 当然ながら、このオプションと同時に time を指定することはできない。 しかし、コマンドラインから説明用のメッセージを入力し、 ログイン中の全てのユーザに送る事はできる。 |
time | いつシャットダウンするか。 |
now | -rもしくは-hと組み合わせた場合即時shutdownを実行する。 |
これらを組み合わせてやるが、とりあえずshutdown -h now さえ覚えておけば事足りる場合が多い。
再起動コマンド
# shutdown -r now
もしくは
# reboot
で再起動ができる。基本的にはこちらもrootユーザのみでできると思ってほしい。誰でも再起動できたら大変だ。
rebootで十分なので、さらっと再起動したいときは、rebootコマンドを発行すれば適切に再起動してくれる。
もう少し詳しく
shutdownコマンドについては上でお伝えしたので、rebootコマンドについて少し紹介しておく。
# reboot [-n] [-w] [-d] [-f] [-i]
オプションについて
-n | 再起動または停止する前に sync しない。 |
-w | 実際には再起動または停止せずに、 wtmpレコード (/var/log/wtmp ファイル) への記録のみを行う。 |
-d | wtmpレコードへの記録を行わない。 -n オプションを指定した場合は、 自動的に -d オプションも付けられる。 |
-f | shutdownを起動せず、強制的に halt または reboot する。 |
-i | 停止または再起動する直前に 全てのネットワークインターフェースを切断する。 |
-h | 停止または再起動する直前にシステムのすべてのハードディスクを standby モードにする。 |
-p | システムを停止する時に、電源を切る。 |
実際にやってみよう
シャットダウン
コンソールの場合
一般的なシャットダウンをしたい場合スーバーユーザ権限でshutdownコマンドを実行する。
$ su
# shutdown -h now
とすればよい。
デスクトップ環境の場合
右上の電源マークをクリック出てくるアイコンで同じく電源マークをクリックする。
下記のような画面になるので「電源オフ」をクリックする。
コンピュータの再起動
コンソールの場合
一般的な再起動をおこなう場合スーパーユーザ権限でshutdown -r now もしくはrebootコマンドを実行する。
$ su
# shutdown -r now
もしくは
# reboot
とすればよい。
デスクトップ環境の場合
コンピュータの終了と基本的に変わらない。
下記の画面で「再起動」を選択すると再起動される
runlevel(ランレベル)
Linuxにはrunlevelというものが存在する。最後に軽くご紹介しておこう。
runlevelは0から6が存在する。Redhat系つまりCentOSなどは以下のようになっている。
- 0 システム停止
- 1 シングルユーザモード
- 2 未使用
- 3 マルチユーザモード(CUI)
- 4 未使用
- 5 マルチユーザモード(GUI)
- 6 再起動
shutdownコマンドは、init プロセスにシグナルを送り、 ランレベルの変更を依頼することによって、システムを終了させる。
ランレベル 0 はシステムを停止するためにつかわれるshutdown -h now など。 ランレベル 6 はシステムをリブートするために用いられる。shutdown -r now や reboot など。
CentOS7以降はinitではなく、systemdというシステムに変わっているが、一応にこの概念は存在する。
ランレベルに関しては別ページで詳しく解説するので、ここではそういう信号を送っているというのを知っておけば十分だ。
まとめ
このページではLinuxのシャットダウンと再起動についてお伝えした。
何度も使うコマンドなので、必ず覚えてしまおう。
ご指導ください。
セルフガソリンスタドで給油監視をしています。深夜における給油監視の中で、POS作業の一環として、シャットダウンをしてすぐに再起動を1回だけすることになっています。所要時間は4~5分程度です。なぜ、何のためにするのでしょうかとお尋ねします。
ご愛読いただきありがとうございます。
あくまで想像の範囲となるのですが、再起動の際にPOSが行っているのは
・1日の売上データを締め・集計して送信している
・POSに記録できるデータ件数(量)に上限があるのでデータ送信後にクリアしている
この2つの処理ではないでしょうか。
今後とも、ご愛読のほどよろしくお願いいたします。
シャットダウンや再起動はrootユーザのみとなっていますが
こちらの環境ではなぜか一般ユーザでも実行できてしまいます。
なぜでしょうか?
試しにvisudoコマンドを打ってみましたが許可がありませんと表示されます。
環境はVirtualBox、CentOS8、visudoで権限をALLにしてますがもちろんsudoは使用しておりません。
いつもご愛読いただきありがとうございます。
CentOS7以降では様々なサービスの運用にsystemdという仕組みが採用されました。(CentOS8も同様です)
コンソールで以下のようなコマンドを打って頂くとわかりやすいのですが、
ls -l /usr/sbin/ | grep systemctl
haltやshutdown、rebootなど、システムの終了や再起動に関わるコマンドが全て systemctl というコマンドへのリンクとなっています。
それぞれのコマンドを打った時に、実際に実行されているのはsystemctlなのですね。
shutdown -h now は実際には systemctl poweroff に自動的に読みかえられているというわけです。
このsystemctlは非常に多彩な利用方法がありますが、その中の一つがシステムの電源管理です。CentOS7以降、shutdownが一般ユーザーでも可能になったということは、systemctlが行う電源管理機能の実行が一般ユーザーに許可されているということになります。
もちろんそうでないものもあります。
例えば一般ユーザーの状態でランレベルを変更するコマンド
$ systemctl set-default multi-user.target
と打つとこれはエラーが出ます。ランレベルの変更はrootの特権ということですね。
「シャットダウンは管理者でないと出来ない」は確かにセキュリティ的にも正しく、仕様としてそうなっていましたがCentOS7以降ではある意味で「緩和」された形となります。
引き続き、何卒よろしくお願いいたします。