syncコマンドは、システム上でファイルの書き込みが終了しているが、ディスクに書き込まれていないデータを、ユーザが任意のタイミングでディスクに書き込むように命令することができます。
syncコマンドとは
ディスクへのデータの書き込みは、メモリ内に一定のデータ量またはメモリ内で一定時間の時間が立つことでディスクへのデータの書き込みが行われます。
この様子は以下のようなコマンドで確認を行うことができ、
1 |
watch grep -e Dirty: -e Writeback: /proc/meminfo |
以下のように表示されます。
1 2 |
Dirty: 0 kB Writeback: 0 kB |
Dirtyは、ディスクに書き込みを待つためのメモリのことです。
Writebackは、ディスクに書き込まれているメモリの合計量です。
syncコマンドは、Dirtyメモリで書き込みを待っているデータをすぐに書き出すように命令するコマンドになります。
バッファ中のデータをディスクに書き込む
syncコマンドは、単純にそのまま利用することができ、バッファ中のデータをディスクに書き込むことができます。利用用途として、意図しないシャットダウン時等のときにデータの整合性を保つためにsyncコマンドを利用することでデータ損失を防げます。また、外部ストレージに確実にデータを書き込むために利用できます。また、ディスクパフォーマンス時でのキャッシュクリアに利用される場合もあります。
ただし、基本的にデータをディスクへ書き込むタイミングなどはOS側の仕事でカーネルが適切に処理するので、頻繁にsyncコマンドを利用する必要はありません。
コマンド例
1 |
sync |