【3分でわかる】Linuxのシャットダウンと再起動

linuxシャットダウン
  • このエントリーをはてなブックマークに追加
  • Pocket

このページでは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 gui

下記のような画面になるので「電源オフ」をクリックする。

shutdown gui

コンピュータの再起動

コンソールの場合

一般的な再起動をおこなう場合スーパーユーザ権限でshutdown -r now もしくはrebootコマンドを実行する。

$ su

# shutdown -r now

もしくは

# reboot

とすればよい。

デスクトップ環境の場合

コンピュータの終了と基本的に変わらない。 

下記の画面で「再起動」を選択すると再起動される

shutdown gui

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のシャットダウンと再起動についてお伝えした。

何度も使うコマンドなので、必ず覚えてしまおう。

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できます。

IT講師に興味はありませんか?

・「今までIT講師をやってきたが、更に多くの講義を行いたい」

・「エンジニアとしてやってきたが講師業に魅力を感じている」

・「講師として活躍するためにベースとなる知識を知りたい」

・「様々な分野や言語の講師にチャレンジしてみたい」


という方はぜひIT講師募集のページをご覧ください。


リスキルテクノロジーでは「受講している方々にITを好きになってもらう」ことを目標に、同じ目標に向かって歩んで行ける講師の方を常に探しています。


システム開発やインフラ構築などのエンジニアリング経験を活かし、新入社員などの未経験者や経験の浅い初学者の方々に対してITトレーニングを行っていただくことになります。


テキストやカリキュラムは事前に用意されており、それらを元に講義を進めていくため、IT講師をはじめて実施する方でも安心してトレーニングを実施できます。


IT講師募集のページを見る

SNSでもご購読できます。

コメント

  1. コイデトシミ より:

    ご指導ください。
    セルフガソリンスタドで給油監視をしています。深夜における給油監視の中で、POS作業の一環として、シャットダウンをしてすぐに再起動を1回だけすることになっています。所要時間は4~5分程度です。なぜ、何のためにするのでしょうかとお尋ねします。

    1. リカレントテクノロジー より:

      ご愛読いただきありがとうございます。

      あくまで想像の範囲となるのですが、再起動の際にPOSが行っているのは

      ・1日の売上データを締め・集計して送信している
      ・POSに記録できるデータ件数(量)に上限があるのでデータ送信後にクリアしている

      この2つの処理ではないでしょうか。
      今後とも、ご愛読のほどよろしくお願いいたします。

  2. 初心者a より:

    シャットダウンや再起動はrootユーザのみとなっていますが
    こちらの環境ではなぜか一般ユーザでも実行できてしまいます。
    なぜでしょうか?
    試しにvisudoコマンドを打ってみましたが許可がありませんと表示されます。
    環境はVirtualBox、CentOS8、visudoで権限をALLにしてますがもちろんsudoは使用しておりません。 

    1. リカレントテクノロジー より:

      いつもご愛読いただきありがとうございます。

      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以降ではある意味で「緩和」された形となります。

      引き続き、何卒よろしくお願いいたします。

コメントを残す

*

未経験からの育成制度も充実
IT講師に興味はありませんか?

リスキルテクノロジーでIT講師の積極募集を開始! 経験・未経験問わずご応募可能。育成制度で講師スキル向上も目指せます

IT講師に応募する