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

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

新規登録して質問してみよう
ただいま回答率
85.37%
Linux

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

コマンド

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

Q&A

4回答

100946閲覧

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

yu-ki0

総合スコア69

Linux

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

コマンド

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

7グッド

11クリップ

投稿2016/11/23 05:57

編集2016/12/17 00:22

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

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

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

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

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

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

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

yosida001, kwy8791, ken1flan, NOTEPAD, SHIKI_MONAKO, yohhoy, KSwordOfHaste👍を押しています

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

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

この「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と同じでしたの。OpenBSDでは、rcスクリプトの処理まで行いますが、shutdownとは独立しているようです。同じ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 08:20

編集2018/05/22 15:39
raccy

総合スコア21737

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/11/29 16:09

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

2016/11/29 21:10

> AppleLisaさん ??? 「おっさん」という言葉に30代から40代ぐらいの男性という意味以外は含めていませんが、何が言いたいのでしょうか?「おっさん」はIT分野において主力を占めており、「おっさん」がいなかったら社会は成り立たないですよ。別の変な意味で捉えてません? ただ「おっさん」の傾向として、古い昔やった技術の知識に縛られて、新しい技術については知らないときがあるというだけです。もう少し年齢を取ると、新しい技術の詳細は若いもんに任せようにシフトしていくのですが。ただ、別に全員が全員そうであるとは限りませんけど、あくまで私が見る限りの傾向としてです。 ついでに、私も「おっさん」ですけど。
退会済みユーザー

退会済みユーザー

2016/11/30 06:26

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

2018/05/22 15:28

Linuxのrebootは安全だから使っても問題ない、それが新しい技術だというスタンスには反対です。それぞれのOSにはそれぞれの思想があり、それぞれ変える部分もあれば変えない部分もある。Linuxでrebootを使う癖がつけば、違うOSの管理をするときにうっかりrebootを使って問題を起こすかもしれない。だから若手に教えるならば、「"shutdown -r now"を使え。まあLinuxでは実質同じだが、汎用性のためにshutdownを使え。」と指導するのが真っ当な先達というものです。 なお「BSD系は全て同じ」は正しくなく、OpenBSDではreboot/haltもrc.dスクリプトを逆順に呼び出して終了処理を行います。
raccy

2018/05/22 15:57

> mzakiさん OpenBSDについては全く詳しくなかったので、マニュアルを探して確認し、編集しました。 私は別に、rebootを使えと推奨しているつもりはありません。なぜダメなのか、どういう問題があるのか、きちんと理由を説明せずに、頭ごなしに使うなと言うことが問題だと思っています。LinuxとUNIXは近いようで遠いです。違いを説明せずにどっちでも使えると言う教え方は怖いです。
guest

0

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

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

投稿2016/11/23 06:18

cat_breed

総合スコア123

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MasahikoHirata

2016/11/23 06:22 編集

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

2016/11/23 06:33

メッセージとは警告の事らしいです shutdown はすべてのユーザーに、シャットダウンの 警告メッセージが送られる。コマンドラインでメッセージが指定されなかった 場合には、 shutdown は送信するメッセージを尋ねてくる。ただし -q オプションをセットした場合には尋ねない。 参考サイト https://linuxjm.osdn.jp/html/util-linux/man8/shutdown.8.html
MasahikoHirata

2016/11/23 06:45

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

2016/11/23 06:54

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

2016/11/23 06:56 編集

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

2016/11/23 07:04

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

2016/11/23 07:20

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

2016/11/23 07:29

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

2016/11/23 07:55 編集

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

0

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

投稿2016/11/23 06:17

MasahikoHirata

総合スコア3747

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MasahikoHirata

2016/11/23 07:04

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

2016/11/23 08:04

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

2016/11/23 08:06

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

2016/11/23 08:06

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

2016/11/23 08:14

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

2016/11/23 08:17

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

2016/11/23 08:52

すいませんが、Linuxのrebootがこの回答のような動きになると聞いたことは一度も無く、全くもって信じられません。完全に間違っているとすら思っています。 後学のために、次のことについて教えてください。 * どちらがどちらになるのでしょうか? * 詳しい動作が書かれた参考になる資料はありますでしょうか?
maisumakun

2016/11/23 09:24

本題とは関係ないところですが、cat_breedさんにコメントです。 たとえ善意からだったとしても、「技術的に間違っている」回答、あるいは「質問の回答として成立していない、的を外したような回答」に対しては、ゼロ以下まで下げられても仕方ないとは思います。
cat_breed

2016/11/23 09:43

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

2016/11/23 13:50

本筋に戻りますが、MasahikoHirataさん、よく分かってないのに”shutdown”という字面だけで「電源を切る」と即断して頓珍漢な話を繰り広げていたのではないでしょうか。 昔のUnixでshutdownをオプションなしで実行したらシングルユーザモードになったはずで(今でもそうかな?)、そもそもデフォルト動作が「電源を切る」ではないです。 またcat_breedさんの回答へのコメントですが、shutdownコマンドを実行すると他のログイン中ユーザにメッセージを表示(wall)機能は、Unixがマルチユーザ利用前提のOSで、しかも昔はユーザがターミナルログインで使用していたことを考えるとある種当然の機能です。 (それをLinuxで踏襲したというのはその通りです) 何で「システムの運用についての会社の考え方が答え」なのか意味が分かりません。 MasahikoHirataさんには悪いですが、私はこれはマイナス評価をつけられて当然だと思いますし、これに同情の意味でプラス評価をするようなことがあるとすれば、それは回答を正当に評価していないのと同じだと思います。
KSwordOfHaste

2016/11/23 15:18 編集

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

2016/11/23 14:59

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

2016/11/23 21:56

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

2016/11/29 22:32

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

退会済みユーザー

2016/11/30 06:29

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

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 06:50

cateye

総合スコア6851

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問