sync;sync;sync;shutdown
本日ふとSolarisの停止手順書を読んでいたとき、気になる記述があった。
# sync
# sync
# sync
# shutdown -y -i5 -g0
こんなん。syncって何だろう?
調べてみると、syncはOSが持ってるキャッシュをディスクに出力するシステムコールのよう。何でシャットダウンの前にそんなコマンド打つの?というと、OSを停止する前にきちんとファイルに書き込まれることを保証するため、とのこと。
何で3回も打つの?と気になって調べてみたらこんな理由みたい。
http://home.jp.freebsd.org/cgi-bin/showmail/FreeBSD-users-jp/5924
http://home.jp.freebsd.org/cgi-bin/showmail/FreeBSD-users-jp/5935
曰く、大昔のUNIXでは停止コマンドでディスクとの同期を取らなかったため、停止前にファイルに書きだしてやる必要があった。したがって、sync→shutdown(halt)で同期を取るコマンドが必要だったのだ、と。でも3回も実行するのはおまじないっぽい。
現在のUNIXではshutdownやhaltコマンド内部でsyncしているため、明示的に実行する必要はないらしい。少なくとも上のMLの日付を見ると16年前のUNIXで既に実装されているので、2012年のSolarisでは不要だろう。事実、おれもこれまでそんな手順見たことなかった。
今日読んだ手順書の作者は古いUNIX技術者だったんだろうか。…今度の手順書改版からはsyncを外すことになるだろうな。