sync(8) ディスク上のデータをメモリと同期させる

書式

sync [--help] [--version]

説明

sync はメモリにバッファされたすべてのデータをディスクに書き込む。 これには、変更されたスーパーブロック・変更された inode・ 遅延した読み書きが含まれる (他にもあるかもしれない)。 これはカーネルに実装されているべきである。 なぜなら sync プログラムは sync(2) システムコールを行使するだけだからである。

カーネルは (比較的遅い) ディスクの読み書きを避けるため、 データをメモリに保持する。 これにより性能は向上するが、コンピュータがクラッシュした場合、 結果としてデータが損失したりファイルシステムが壊れたりするかもしれない。 sync はメモリにある内容すべてがディスクに書き込まれることを保証する。

(新しいカーネルコードをデバックしていてカーネルパニックを引き起こす前などの) 通常と異なる方法でプロセッサーを停止させる前には、 sync を呼び出すべきである。 一般的には sync(2) を呼び出す前に、 システムを静止状態にさせる shutdown(8), reboot(8), halt(8) といったコマンドを使ってプロセッサーを停止させるべきである。 (これらのコマンドにはいろいろな実装があるので、 ドキュメントを当ること。 reboot(8), halt(8) を直接呼び出すべきではないシステムもある。)

オプション

--help
標準出力に使用方法のメッセージを出力して正常終了する。
--version
標準出力にバージョン情報を出力して正常終了する。
--
オプションリストを終了する。

環境変数

変数 LANG, LC_ALL, LC_CTYPE, LC_MESSAGES は通常の意味を持つ。

準拠

POSIX.2.

注意

Linux では、 sync は (まだ書き込まれていない) ダーティなブロックの書き込みを スケジューリングすることのみを保証する。 つまり、すべてのブロックの書き込みが終るまでに、実際には少し時間がかかる。 reboot(8), halt(8) コマンドは sync(2) を呼んだ後に数秒間スリープすることで、これを考慮に入れている。

このページでは fileutils-4.0 パッケージでの sync コマンドについて説明しているので、 その他のバージョンでは少し違いがあるかもしれない。