質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

92.54%

受付中 shutdownコマンドとrebootコマンドの違いについて

  • Linux

    1503questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

  • コマンド

    126questions

    コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

2016/11/23 14:57 投稿

yu-ki0 score 48

  • 3

    回答

  • 評価

  • 2090

    view

Linuxのshutdownコマンドとrebootコマンドについて質問です。

先日、職場で、rebootコマンドを実行するとまずいので、再起動時は"shutdown -r now"を指定するように言われました。
(環境変数や設定が消える?)

しかし、その理由が調べてもわかりません。

rebootコマンドとshutdownコマンドの違いは何なのでしょうか?

気になる質問をクリップする

クリップした質問に回答があった場合に通知・メールを受け取ることができます。

クリップした質問はマイページの「クリップ」タブからいつでも見ることができます。

良い質問の評価を上げる

以下のような質問は評価を上げましょう。

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

質問の評価を上げたことを取り消します

この機能は開放されていません

評価を下げる条件を満たしてません

評価を下げる理由を選択してください

上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

質問の評価を下げる機能の利用条件

この機能を利用するためには、以下の事項を行う必要があります。

質問の評価を下げたことを取り消します

回答(全3件)

回答の評価を上げる

以下のような回答は評価を上げましょう。

  • 正しい回答
  • わかりやすい回答
  • ためになる回答

評価が高い回答ほどページの上位に表示されます。

27

この機能は開放されていません

評価を下げる条件を満たしてません

その指摘した人、結構おっさんじゃないでしょうか?

この「rebootはシステムを壊すから使ってはいけない」はインフラ系SEの中で都市伝説のように語り継がれていますが、Linuxにおいては使っても全く問題ありません。正確には「UNIX(Linuxを含めず)で rebootはシステムを壊すから使ってはいけない」です。

Linuxについては、Man page of SHUTDOWNにあるように、rebootshutdown -r -q nowのエイリアスです(シェルのエイリアスというわけではなく、内部でshutdown -r -q nowを呼び出しているだけと言うこと)。shutdownと同じくinitシステムを6に切り替えるため、サービスを順番に落とし(最新のLinuxではsystemdやupstartが採用される場合が多いですが、同じように順番にサービスを落とします)、再起動を行います。サービスが依存関係に基づいた安全な順序でおとされ、各終了処理も実行されますので、shotdownを使う場合と同じく、安全に再起動が可能です。

しかし、LinuxではないUNIXでは違います。次の二つを見てください。
FreeBSD 11.0 | On-line Manual of "reboot"
Solaris 11.2 | reboot - マニュアルページセク ション 1M: システム管理コマンド
FreeBSDとSolarisでは、shutdownへのエイリアスででも呼び出す物でもありません。これらのrebootでは、initシステムの切り替えが発生せず、全てのプロセスに対して終了シグナルを送るだけです。サービスの終了順序は守られませんし、initスクリプトに記載された終了時の処理も行われません。そのため、サービスによってはテンポラリファイルやPIDファイルが残ったり、エラーが記録されたり、最後の情報が書き込まれなかったり等の不具合が起きる可能性があります。だから、通常は使ってはいけないコマンドだったのです。(shutdownコマンドと違い、各サービスの終了処理が終わらずいつまでも再起動しないと言うことがありません。そういった不具合が発生したときに、強制的に再起動したいときに使うのがrebootです。)

※ macOS Sierraのrebootも、マニュアルがFreeBSDと同じでしたので、BSD系UNIXは全て同じと思われます。HP-UX等の他のSystem V系UNIXついてはわかりません。実機やマニュアル等をお持ちの方は情報をコメントいただければと思います。

ということで、そんなことを言われたら。man rebootと打って、その画面を見せながら、「えっ、先輩は、Linuxの場合はrebootがshutdown呼び出しと同じだから安全に再起動できる、って知らなかったですか?ププッ」とドヤ顔で言ってあげましょう。きっと、素敵な課題を与えてくれるに違いありません。


【追記】

  • Linuxにおいては、同様の理由でhaltも安全です。(UNIXでは危険)
  • shutdownには、オプションで無効を指定しない限りsyncの処理が含まれます(shutdownを呼び出すreboothaltも同様です)。shutdown等を実行する前にsyncを打たなくても問題はありません。Man page of SYNCも参考にしてください。

なお、私は昔の癖で

# sync
# sync
# sync
# shutdown -i6 -g0 -y


と打ってしまういそうになる古い人間ですが…。

2016/11/23 17:20 投稿

2016/11/23 23:27 編集

コメント(2)

2016/11/30 01:09

他人の質問の中で解答として(おっさん)ですか?
まず読む気が薄れましたね。
このサイト年齢により質問や解答に制限があるの?

2016/11/30 06:10

> AppleLisaさん

???
「おっさん」という言葉に30代から40代ぐらいの男性という意味以外は含めていませんが、何が言いたいのでしょうか?「おっさん」はIT分野において主力を占めており、「おっさん」がいなかったら社会は成り立たないですよ。別の変な意味で捉えてません?

ただ「おっさん」の傾向として、古い昔やった技術の知識に縛られて、新しい技術については知らないときがあるというだけです。もう少し年齢を取ると、新しい技術の詳細は若いもんに任せようにシフトしていくのですが。ただ、別に全員が全員そうであるとは限りませんけど、あくまで私が見る限りの傾向としてです。

ついでに、私も「おっさん」ですけど。

回答の評価を上げる

以下のような回答は評価を上げましょう。

  • 正しい回答
  • わかりやすい回答
  • ためになる回答

評価が高い回答ほどページの上位に表示されます。

1

この機能は開放されていません

評価を下げる条件を満たしてません

メッセージを表示しないかするかでしょうか?
"reboot" は "shutdown -r -q now"
と同じ意味だそうです
"shutdown -r now" は フラグの"-q"
を指定していないのでメッセージが表示されるそうです

参考URL
http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230868/

2016/11/23 15:18 投稿

コメント(9)

2016/11/23 15:22 編集

ありがとうございます。あまり意識していなかったのと、あまり使わないコマンドでしたので。(Linux以前のUnixの感覚でオプションの違いが改めて理解できました)
ただ必要なメッセージなので/etc/messagesには同様に記録は残りますね。

2016/11/23 15:33

メッセージとは警告の事らしいです

shutdown はすべてのユーザーに、シャットダウンの 警告メッセージが送られる。コマンドラインでメッセージが指定されなかった 場合には、 shutdown は送信するメッセージを尋ねてくる。ただし -q オプションをセットした場合には尋ねない。

参考サイト
https://linuxjm.osdn.jp/html/util-linux/man8/shutdown.8.html

2016/11/23 15:45

勉強になります。’shutdown はすべてのユーザーに、シャットダウンの 警告メッセージが送られる’。これは全てのLinuxで共通でしょうか?

2016/11/23 15:54

調べただけで実際に使ってないので詳しくは分からないです

2016/11/23 15:56 編集

現在は個人用にLinuxを使うことも多いので「そのマシンにログインしている他のユーザーの存在」をあまり意識しないことも多いと思います。元々のUnixは一台のマシンを複数人が共有していることも多かったのでshutdownの際に「あとX分でshtudownします。必要な後始末をしてlogoutしてください。」という警告を全ユーザーへ通知するのがデフォルト動作になっていたと思います。Linuxもそれを踏襲したのではないでしょうか。(単なる推測で事実を知っているわけではありません)

2016/11/23 16:04

KSwordOfHasteさん、質問者の回答欄ですが、質問者さまも’何故’との疑問をお持ちでこれを解決する部分に於いて、詳細についての解説があればと思い、横からのコメントです。(私も違いについての勉強をしてみたいと思いました)。
そこでKSwordOfHasteさんの内容も過去からのUnix(BSD4.2からですが)でも、いきなりシステムが’再起動するとは’という場面で人数こそ少ない時代でしたが(Sony NEWSとかNEC EWS4800とか)そういう場面がありました。おそらく質問者さまの同僚のかたも同じ考えを伝えきれていないのでは?また全てのLinuxにてという質問をこの回答者さまにしたのは、過去からrunlevelについてUNIX系のOSにて会議でも議題たったので、必ずしもメッセージ出なかったような記憶からです。
ありがとうございます。また質問者さまに於かれてもヒントになれば幸いです。

2016/11/23 16:20

なるほどそういう背景があったのですね、おわかりかと思いますが自分はそのような背景についてなにがしかの考えがあるわけではありません(w; 単に「そういうことだったんじゃないかな」程度のものです。しかしrunlevel>=2(multi user mode)でもメッセージがでないことがあったんでしょうか?もしそうだったとしたら「えぇぇ」と思ってしまいますよね?

2016/11/23 16:29

KSwordOfHasteさん、この質問、意外とシステムの運用についての会社の考え方が答えで、しかしながら何故そのようにの指示が欠落しまったための質問と推測しています。コマンドの違い(動作の違いであれば基本は私の回答が基本だった?)のでは?と回答した後に痛切に感じた次第です。

2016/11/23 16:55 編集

再びなるほどです。AP/DB/Webサーバー/共有ホストいずれの運用でも「電源を切って再起動する」という意図を含んでいると言われると納得できる根拠に感じます。またrunlevel>=2ならばcat_breedさんの回答も根拠に感じられます。これらは相反するものではないので両方の意味がこめられている場合もあると思いました。

回答の評価を上げる

以下のような回答は評価を上げましょう。

  • 正しい回答
  • わかりやすい回答
  • ためになる回答

評価が高い回答ほどページの上位に表示されます。

-3

この機能は開放されていません

評価を下げる条件を満たしてません

もし違いがあるとすれば、電源を切るか切らないかでは。
電源を切っての起動と切らない場合の起動ではBIOSの動作の違いがある場合があります。(BIOS)はメーカーにより多少の違いがあります。

2016/11/23 15:17 投稿

コメント(14)

2016/11/23 16:04

他の回答者さまの内容にて続かせて頂く事をお許しください。

2016/11/23 17:04

MasahikoHirataさんの回答は根拠ある理由の一つに感じました。マイナス付与があったようですが、その理由も知りたい気がします。妥当な理由があるならそれがそのまま参考になると思います。もしマイナスが不適切だったなら取り消されてはいかがでしょうか。

2016/11/23 17:06

後、忘れていけないのが'shutdown'の場合は'sync'を行う事も忘れませんように。

2016/11/23 17:06

KSwordOfHasteさん、ありがとうございます。

2016/11/23 17:14

人助けしようと回答してくださっている人にゼロ以下になるマイナスシステムは廃止して欲しいです

2016/11/23 17:17

cat_breedさんに同意です。また貴殿の回答で私も勉強になりました事を感謝申し上げます。

2016/11/23 17:52

すいませんが、Linuxのrebootがこの回答のような動きになると聞いたことは一度も無く、全くもって信じられません。完全に間違っているとすら思っています。

後学のために、次のことについて教えてください。
* どちらがどちらになるのでしょうか?
* 詳しい動作が書かれた参考になる資料はありますでしょうか?

2016/11/23 18:24

本題とは関係ないところですが、cat_breedさんにコメントです。

たとえ善意からだったとしても、「技術的に間違っている」回答、あるいは「質問の回答として成立していない、的を外したような回答」に対しては、ゼロ以下まで下げられても仕方ないとは思います。

2016/11/23 18:43

ゼロ以下のマイナスをつけられると、またtaratailで回答しようとは思わなくなって利用者が減ってしまう問題もあって難しい所です

2016/11/23 22:50

本筋に戻りますが、MasahikoHirataさん、よく分かってないのに”shutdown”という字面だけで「電源を切る」と即断して頓珍漢な話を繰り広げていたのではないでしょうか。

昔のUnixでshutdownをオプションなしで実行したらシングルユーザモードになったはずで(今でもそうかな?)、そもそもデフォルト動作が「電源を切る」ではないです。

またcat_breedさんの回答へのコメントですが、shutdownコマンドを実行すると他のログイン中ユーザにメッセージを表示(wall)機能は、Unixがマルチユーザ利用前提のOSで、しかも昔はユーザがターミナルログインで使用していたことを考えるとある種当然の機能です。
(それをLinuxで踏襲したというのはその通りです)
何で「システムの運用についての会社の考え方が答え」なのか意味が分かりません。

MasahikoHirataさんには悪いですが、私はこれはマイナス評価をつけられて当然だと思いますし、これに同情の意味でプラス評価をするようなことがあるとすれば、それは回答を正当に評価していないのと同じだと思います。

2016/11/24 00:18 編集

自分は「デバイスをPowerOff状態から再度起動」という説明に「なるほどそういう意味なのか役立った」と感じたので+しました。これまでの議論を読んでいて「どうもそれは勘違いだったらしい」ということがわかってきましたのでそれをもとへ戻します。間違いを正すことは有益なので私をはじめとした閲覧者の方々への役に立つことなのでコメントいただくことは大変ありがたいことに感じました。

2016/11/23 23:59

貴重なご意見真摯に頂きます。仕事(化学系)では、データ整理や計算などでサーバーを使用しておりますが、データロガーなどの非停止の運用をしており、滅多に'shutdown'や'reboot'の使用が無い(コメントにも滅多に使わないのでと書かせて頂いております)ので自分の認識の範囲(誤っていた部分、今後の参考にさせて頂きます)、非常に勉強となりました事をお礼申し上げます。

2016/11/24 06:56

MasahikoHirataさん
> 自分の認識の範囲
そこはどの部分なのでしょうか?結局私の問い、どっちがどっちなのか?資料はないのか?には答えてくれないんですか?
曖昧な返答をしないでください。何が間違っていたのか、はっきりしてください。もし、間違っていたなら、回答を修正してください。根拠が一切無いのであれば、根拠がない旨を回答に追記してください。Linuxについて知らないのなら、Linuxについて知らないと回答に追記してください。結局、未だに私にはこの回答自体に対しては正しいのか正しくないのか判断できません。

2016/11/30 07:32

回答を見て「あれ?」と思ってしまいましたので、もし、間違っていたということであれば、回答の方を修正していただけないでしょうか。
あと、shutdown -r と reboot は別として、パソコンの再起動で、電源を切っての起動と切らない場合の起動の2種類があるのでしょうか?もし、そうであれば、知っておきたいので、出典など教えていただけないでしょうか。ワンボードマイコンくらいだと、メモリの初期状態が違うので、リセットボタンでリセットするのと電源を切って数秒後に再投入するので動作が違う(まあ、ソフトウェアのバグなんですが)ことがあったように思いますが、今のパソコンでもそのようなことがあるのでしょうか?

15分調べてもわからないことは、teratailで質問しよう!

ただいまの回答率

92.54%

関連した質問

同じタグがついた質問を見る

  • Linux

    1503questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

  • コマンド

    126questions

    コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

閲覧数の多いLinuxの質問

関連した質問

メールアドレスで登録

利用規約、及び 個人情報の取り扱いに関する要項をご確認のうえ同意いただける場合は「同意して登録」ボタンをクリックしてください。

SNSアカウントで登録

  • Facebook
  • Twitter
  • Google
  • Github
  • Hatena

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る