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

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

ただいまの
回答率

91.46%

  • Linux

    2615questions

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

  • コマンド

    189questions

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

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

受付中

回答 4

投稿 2016/11/23 14:57 ・編集 2016/12/17 09:22

  • 評価
  • クリップ 10
  • VIEW 16K+

yu-ki0

score 66

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

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

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

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

---追記 2016/12/17---
皆さん回答ありがとうございます。
質問が放置気味になってしまい、申し訳ありません。

様々な意見があり、とても参考になりました。
回答を見て疑問に思ったのですが、shutdowmコマンドのコードを見ることはできないのでしょうか?
"man page of SHUTDOWN"のページに記述されているファイルを見ても、ファイルが存在しないか、バイナリファイルなので、ソースコードの確認方法が存在するなら知りたいです。

追加の質問となってしまいますが、よろしくお願いいたします。

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

    クリップした質問は、後からいつでもマイページで確認できます。

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

    クリップを取り消します

  • 良い質問の評価を上げる

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

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

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

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

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 4

+41

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

この「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

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/11/30 01:09

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

    キャンセル

  • 2016/11/30 06:10

    > AppleLisaさん

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

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

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

    キャンセル

  • 2016/11/30 15:26

    raccyさんの博学かつ分かりやすい解説に膝を打った直後に
    AppleLisaの謎理論すぎるつまらない難癖でゲンナリ。

    キャンセル

+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

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 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さんの回答も根拠に感じられます。これらは相反するものではないので両方の意味がこめられている場合もあると思いました。

    キャンセル

0

まるまる^^;引用になりますが、freebsdのマニュアルでは以下のようになっています。(パラメータの説明は略してあります)

--shutdown--
shutdown ユーティリティは、自動的にシャットダウンするための手順をスーパユ
ーザに提供します。システムがシャットダウンされるときユーザに知らせるので、
こういったお知せを面倒がって行なわないシステム管理者やハッカーやグルと
いった人々から、ユーザを救います。

「中略」

システム停止の 10 時間前から、ログイン中の全てのユーザの端末に警告メッセ
ージが表示されはじめ、終末が近付くにつれ頻繁になってきます。システム停止
の 5 分前、もしくは 5 分以内にシステム停止する場合には、ただちに警告メッ
セージをコピーした /var/run/nologin が作られログインが禁止されます。ユー
ザがログインしようとした際にこのファイルが存在する場合には、 login(1) は
その内容を表示し終了します。このファイルは shutdown が終了する際に削除さ
れます。

システム停止時には、システムを停止した時間、実行者、理由がシステムログに
記録されます。その後、対応するシグナルが init(8) に送られ、システムを停止
、再起動、シングルユーザ状態のいずれかにします (この動作は上記のオプショ
ンに依存します)。システムを停止する時間と警告メッセージは
/var/run/nologin に置かれます。これをユーザにシステムを再開する時間や、な
ぜシステムを停止するかなどを知らせるために使うべきです。

計画されたシャットダウンは、 shutdown プロセスを殺すことにより打ち消せま
す (SIGTERM で十分です)。 shutdown が作成した /var/run/nologin ファイルは
、自動的に削除されます。

--reboot--

halt と reboot は、ファイルシステムのキャッシュをディスクへ書き出し、すべ
ての実行中のプロセスに SIGTERM を (そして、それに続いて SIGKILL を) 送り
ます。そして、システムを停止 ( halt ) したり、再起動 ( reboot ) したりし
ます。その動作は wtmp(5) ファイルに記入されます。それはログインのアカウン
ティングファイルへのシャットダウン記録の書き出しを含んでいます。

「中略」

通常、システムの停止や再起動を要する場合には、ユーザに事前警告を与えて特
定のプログラムを綺麗に停止する shutdown(8) を使用します。 shutdown(8) は、
ログインしているユーザにシステム停止の警告を与えます。

投稿 2016/11/30 15:50

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

-6

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

投稿 2016/11/23 15:17

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 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種類があるのでしょうか?もし、そうであれば、知っておきたいので、出典など教えていただけないでしょうか。ワンボードマイコンくらいだと、メモリの初期状態が違うので、リセットボタンでリセットするのと電源を切って数秒後に再投入するので動作が違う(まあ、ソフトウェアのバグなんですが)ことがあったように思いますが、今のパソコンでもそのようなことがあるのでしょうか?

    キャンセル

  • 2016/11/30 15:29

    ゼロ以下評価はたしかにただ間違いを指摘する以上の悪意を感じる。
    単純なプラス・マイナスだけではなくて、「疑問符」とか「物言い」みたいなマークがあったらいいと思う。

    キャンセル

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

ただいまの回答率

91.46%

関連した質問

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

  • Linux

    2615questions

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

  • コマンド

    189questions

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