質問するログイン新規登録

回答編集履歴

3

OpenBSDについて追記

2018/05/22 15:39

投稿

raccy
raccy

スコア21784

answer CHANGED
@@ -9,7 +9,7 @@
9
9
  [Solaris 11.2 | reboot - マニュアルページセク ション 1M: システム管理コマンド](http://docs.oracle.com/cd/E56342_01/html/E54076/reboot-1m.html#scrolltoc)
10
10
  FreeBSDとSolarisでは、`shutdown`へのエイリアスででも呼び出す物でもありません。これらの`reboot`では、initシステムの切り替えが発生せず、全てのプロセスに対して終了シグナルを送るだけです。サービスの終了順序は守られませんし、initスクリプトに記載された終了時の処理も行われません。そのため、サービスによってはテンポラリファイルやPIDファイルが残ったり、エラーが記録されたり、最後の情報が書き込まれなかったり等の不具合が起きる可能性があります。だから、通常は使ってはいけないコマンドだったのです。(`shutdown`コマンドと違い、各サービスの終了処理が終わらずいつまでも再起動しないと言うことがありません。そういった不具合が発生したときに、強制的に再起動したいときに使うのが`reboot`です。)
11
11
 
12
- ※ macOS Sierraのrebootも、マニュアルがFreeBSDと同じでしたので、BSD系UNIXて同じと思われます。HP-UX等の他のSystem V系UNIXついてはわかりません。実機やマニュアル等をお持ちの方は情報をコメントいただければと思います。
12
+ ※ macOS Sierraの`reboot`も、マニュアルがFreeBSDと同じでしたの。OpenBSD[rcスクリプトの処理まで行います](https://man.openbsd.org/reboot.8)が、`shutdown`と独立しいるようです。同じBSD系UNIXであっても細部の動作は異なる可能性があります。HP-UX等の他のSystem V系UNIXついてはわかりません。実機やマニュアル等をお持ちの方は情報をコメントいただければと思います。
13
13
 
14
14
  ということで、そんなことを言われたら。`man reboot`と打って、その画面を見せながら、「えっ、先輩は、Linuxの場合はrebootがshutdown呼び出しと同じだから安全に再起動できる、って知らなかったですか?ププッ」とドヤ顔で言ってあげましょう。きっと、素敵な課題を与えてくれるに違いありません。
15
15
 

2

誤字の修正…というか、一つ否定が完全に抜けていた。s/書き込まれたり/書き込まれなかったり/

2018/05/22 15:39

投稿

raccy
raccy

スコア21784

answer CHANGED
@@ -7,9 +7,9 @@
7
7
  しかし、LinuxではないUNIXでは違います。次の二つを見てください。
8
8
  [FreeBSD 11.0 | On-line Manual of "reboot"](http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&lc=1&cmd=&man=reboot&dir=jpman-11.0.2%2Fman&sect=0)
9
9
  [Solaris 11.2 | reboot - マニュアルページセク ション 1M: システム管理コマンド](http://docs.oracle.com/cd/E56342_01/html/E54076/reboot-1m.html#scrolltoc)
10
- FreeBSDとSolarisでは、`shutdown`へのエイリアスででも呼び出す物でもありません。これらの`reboot`では、initシステムの切り替えが発生せず、全てのプロセスに対して終了シグナルを送るだけです。サービスの終了順序は守られませんし、initスクリプトに記載された終了時の処理も行われません。そのため、サービスによってはテンポラリファイルやPIDファイルが残ったり、エラーが記録されたり、最後の情報が書き込まれたり等の不具合が起きる可能性があります。だから、通常は使ってはいけないコマンドだったのです。(`shutdown`コマンドと違い、各サービスの終了処理が終わらずいつまでも再起動しないと言うことがありません。そういった不具合が発生したときに、強制的に再起動したいときに使うのが`reboot`です。)
10
+ FreeBSDとSolarisでは、`shutdown`へのエイリアスででも呼び出す物でもありません。これらの`reboot`では、initシステムの切り替えが発生せず、全てのプロセスに対して終了シグナルを送るだけです。サービスの終了順序は守られませんし、initスクリプトに記載された終了時の処理も行われません。そのため、サービスによってはテンポラリファイルやPIDファイルが残ったり、エラーが記録されたり、最後の情報が書き込まれなかったり等の不具合が起きる可能性があります。だから、通常は使ってはいけないコマンドだったのです。(`shutdown`コマンドと違い、各サービスの終了処理が終わらずいつまでも再起動しないと言うことがありません。そういった不具合が発生したときに、強制的に再起動したいときに使うのが`reboot`です。)
11
11
 
12
- ※ macOS Sierraのrebootも、マニュアルがFreeBSDと同じでしたので、BSD系UNIXは全て同じと思われます。HP-UX等の他のSystem V系UNIXついては不明です。実機やマニュアル等をお持ちの方は情報をコメントいただければと思います。
12
+ ※ macOS Sierraのrebootも、マニュアルがFreeBSDと同じでしたので、BSD系UNIXは全て同じと思われます。HP-UX等の他のSystem V系UNIXついてはわかりません。実機やマニュアル等をお持ちの方は情報をコメントいただければと思います。
13
13
 
14
14
  ということで、そんなことを言われたら。`man reboot`と打って、その画面を見せながら、「えっ、先輩は、Linuxの場合はrebootがshutdown呼び出しと同じだから安全に再起動できる、って知らなかったですか?ププッ」とドヤ顔で言ってあげましょう。きっと、素敵な課題を与えてくれるに違いありません。
15
15
 

1

追記を追記

2016/11/23 14:27

投稿

raccy
raccy

スコア21784

answer CHANGED
@@ -11,4 +11,19 @@
11
11
 
12
12
  ※ macOS Sierraのrebootも、マニュアルがFreeBSDと同じでしたので、BSD系UNIXは全て同じと思われます。HP-UX等の他のSystem V系UNIXついては不明です。実機やマニュアル等をお持ちの方は情報をコメントいただければと思います。
13
13
 
14
- ということで、そんなことを言われたら。`man reboot`と打って、その画面を見せながら、「えっ、先輩は、Linuxの場合はrebootがshutdown呼び出しと同じだから安全に再起動できる、って知らなかったですか?ププッ」とドヤ顔で言ってあげましょう。きっと、素敵な課題を与えてくれるに違いありません。
14
+ ということで、そんなことを言われたら。`man reboot`と打って、その画面を見せながら、「えっ、先輩は、Linuxの場合はrebootがshutdown呼び出しと同じだから安全に再起動できる、って知らなかったですか?ププッ」とドヤ顔で言ってあげましょう。きっと、素敵な課題を与えてくれるに違いありません。
15
+
16
+ ---
17
+ 【追記】
18
+
19
+ * Linuxにおいては、同様の理由で`halt`も安全です。(UNIXでは危険)
20
+ * `shutdown`には、オプションで無効を指定しない限り`sync`の処理が含まれます(`shutdown`を呼び出す`reboot`や`halt`も同様です)。`shutdown`等を実行する前に`sync`を打たなくても問題はありません。[Man page of SYNC](https://linuxjm.osdn.jp/html/gnumaniak/man1/sync.1.html)も参考にしてください。
21
+
22
+ なお、私は昔の癖で
23
+ ```
24
+ # sync
25
+ # sync
26
+ # sync
27
+ # shutdown -i6 -g0 -y
28
+ ```
29
+ と打ってしまういそうになる古い人間ですが…。