Linuxのバッファとキャッシュの管理:クリアすべきタイミングと正しい手順
Linuxユーザーの中には、RAM内でバッファやキャッシュが占める領域が大きすぎると感じて、これらを解放したいと考える人がいます。これは多くの場合、WindowsやmacOSほど積極的にキャッシュを行わない環境に慣れていることが原因です。しかし実際には、キャッシュを無理に解放するとパフォーマンスが低下することもあります。一方で、RAMとディスクストレージを同期させることは推奨される操作です。厳密な技術的な意味では「キャッシュの解放」ではありませんが、そう捉えられることも少なくありません。
この操作にはターミナルが必要です。UbuntuではDashで「terminal」と検索するか、Ctrl + Alt + Tを同時に押してください。LXDE、Xfce4、KDEのユーザーは、アプリケーションメニューやWhiskerメニューから「システムツール」→「端末(Terminal)」を選択すると開けます。
方法1:syncコマンドを使う
多くの場合、ユーザーが本当にやりたいのは、メモリ上にキャッシュされた書き込みデータを、データを保持している永続ストレージ(ディスク)へ同期させることです。これにより、メモリ上のファイルバッファへの変更がディスクにも反映され、仮にその時点でシステムがダウンしても、最新の状態を保てる可能性が高まります。少し難しく感じるかもしれませんが、要は「RAMの中の情報を、ディスクやSSD上の情報と同じ状態にする」操作だと覚えておけば十分です。
syncコマンドを引数なしで実行すれば、それだけのことが行われます。まだ書き込まれていない変更内容がディスク上のファイルに反映されます。コマンドラインで sync と入力してEnterキーを押しましょう。出力は一切表示されませんが、直前に実行したコマンドが何であっても問題なく動作します。
この方法は、覚える必要があるのが一語だけというほどシンプルです。他の方法と違い、いつ実行しても安全で、ディスクへの同期が行われているわずかな時間を除けばパフォーマンスへの影響もありません。外部ドライブ間で大量のファイルを移動させた後、「すべての書き込みが完了したか確認したい」という場合にも、syncと入力してEnterを押せばLinuxのバッファを確実にディスクへ書き出せます。その他の方法はあくまでベンチマーク測定用です。「ダーティセクタ」という言葉を聞いたことがあるなら、その問題に対する解決策がこれです。Linuxはファイルをメモリ上に保持しながら、OSの他の部分にはディスク上にあるかのように見せることがありますが、syncを実行すれば、これらの未書き込みの変更も確実にディスクへ反映されます。ただし、データがRAMから削除されるわけではないため、キャッシュされたデータは引き続き他のプログラムから高速にアクセスできます。
方法2:バッファとキャッシュを完全に解放する
先に進む前に知っておいてほしいのは、Linuxが積極的にキャッシュを行うのはデバイスを高速化するためであり、ほとんどの場合は方法1(syncコマンド)で十分だということです。安全のためにも、まずsyncを実行してすべてのディスク書き込みが完了していることを確認するのがおすすめです。ハードウェアベンチマークなどを目的としている場合に限り、キャッシュを完全に解放する方法があります。
この操作の危険性を十分に理解した上で、ターミナルで以下のコマンドを実行します。
free && sync && echo 3 > /proc/sys/vm/drop_caches && free
長いコマンドなので、ここからコピーして貼り付けるのがよいでしょう。ターミナルへの貼り付けは、編集メニューの「貼り付け」を使うか、キーボードショートカット(Ctrl + Shift + Vなど)でも可能です。sync単体とは異なり、このコマンドはroot権限が必要です。一般ユーザーとしてログインしている場合は、コマンドの先頭にsudoを付けてください。このコマンド列では前後でfreeコマンドが実行されるため、メモリキャッシュが実際に空になったことを示す出力を確認できます。
繰り返しになりますが、この操作を行う唯一の理由はベンチマーク測定です。実行後、Linuxが蓄積したキャッシュデータをすべて消し去るため、体感できるほどのパフォーマンス低下に気づくかもしれません。また、sudo swapoff -a でスワップを無効化し、sudo swapon -a で再度有効化することもできますが、これらもroot権限が必要で、実行すべきなのはユーティリティやファイルシステム処理のために本物のハードウェアベンチマークを取ろうとしている開発者だけです。それ以外のユーザーは、root権限なしで一般ユーザーのままsyncコマンドだけを実行し、ダーティセクタがすべてディスクに書き出されていることを確認すれば十分です。
著者について

Kevin Arrows(ケビン・アローズ)
Kevin Arrowsは、10年以上の業界経験を持つ高度な技術スペシャリストです。Microsoft Certified Technology Specialist(MCTS)の資格を保有し、最新の技術動向を追い続けることに強い情熱を持っています。ソフトウェア開発、サイバーセキュリティ、クラウドコンピューティングなど、幅広い技術トピックについて数多くの記事を執筆しており、その専門性と知識の深さは同業者からも広く認められています。複雑な技術的概念を明快かつ簡潔に説明する能力でも高い評価を得ています。
-
Linuxのbcコマンドを16進数計算機として使う方法|コマンドラインで簡単に基数変換するチュートリアル
LinuxをはじめとするUnix系OSには、ほぼ必ず「bc」という基本計算言語(basic calculator)が含まれています。GNUスイートが導入されている環境であれば、追加インストールなしですぐに使えるのが魅力です。bcの構文はC言語に非常によく似ており、コマンドラインから直接16進数計算機として活用できます。これを覚えておけば、スマホに16進数や8進数の変換アプリをダウンロードする必要はもうありません。 開発者はもちろん、学校の課題に取り組む学生にとっても心強い味方となるでしょう。まずはターミナルを開くところから始めます。Ubuntuでは「Ctrl + Alt + T」のショートカッ
-
Ubuntuの電源ボタンで即座にシャットダウンする方法 – クイック・ワンクリックガイド
Ubuntuやその派生ディストリビューションでは、本体の電源ボタンを押すと、通常はオプション選択画面が表示され、システムのシャットダウンかサスペンドを選ぶことになります。しかし、電源ボタンを押せば即座にシャットダウンしてくれることに慣れたユーザーにとって、この仕様はやや不便に感じられます。LXDEベースのUbuntuシステムではこの変更がやや難しいものの、従来のUnity版UbuntuやXubuntuを使っている方なら問題なく設定できます。解決策となるのは、ある小さなUnixハックです。特定のファイルに1行のコマンドを追加するだけで、ロック画面表示中でもデスクトップ表示中でも、電源ボタンを押し