質問に答えるには:
/tmp
です 自動的に空になるはず:はい/tmp
のファイルを削除する必要がありますか? 定期的および手動:いいえ 、システムが処理します。
自問できる場合:
/tmp
からファイルを削除できますか 何らかの理由 (スペースが必要、痕跡を削除したいなど):場合による 、続きを読む .
Filesystem Hierarchy Standard (FHS) の状態:
<ブロック引用>/tmp ディレクトリは、一時ファイルを必要とするプログラムで使用できるようにする必要があります。
プログラムは、/tmp 内のファイルまたはディレクトリがプログラムの呼び出し間で保持されると想定してはなりません。
/var/tmp/
同様の目的がありますが、してはいけません 再起動中に削除されます。
保証されていません その /tmp/
または /var/tmp/
定期的にクリーンアップされます。これは、ディストリビューションと設定に依存する場合がありますが、ほとんどのシステムは時々クリーンアップを行います。 mike
のコメントを参照 .
/tmp のファイルを削除する必要がある場合 、ファイルが使用中かどうかを最初に確認します。これは次の方法で簡単に行うことができます:
lsof /tmp/file_to_delete
権限がある場合は、プロセス名、PID、ファイルの種類など、そのファイルへのハンドルを保持しているプロセスが表示されます。実際にすべてのプロセスを表示するには、先頭に sudo
を追加します またはユーザー root として実行します .
lsof +D /tmp
/tmp
のすべてのファイルが表示されます 以下のディレクトリ (+D
もちろん、これらのファイルは削除しないでください。
実際、まだ開いているファイルを削除すると (削除する権限がある場合)、ファイルシステムの名前空間からアクセスできなくなりますが、開いているファイル ハンドルを持つプロセスにはまだ存在します。そのハンドルを閉じた後、そのプロセスはファイルにアクセスできなくなり、ファイルを開いているプロセスがなくなった場合、ファイルは最終的に削除されます。プロセスは、ファイルが後続の open
の間存続すると想定すべきではありません 呼び出しますが、プログラマーはずさんで、あなたにはわかりません。そのため、それほど賢くはない 一部のプログラムでまだ使用されているファイルを削除します。
これはOSのバリエーションに依存していると思います。通常、/tmp は再起動時にクリアされると思いますが、実際、システムがセッションの途中で自分自身をクリーンアップするのは安全ではありません。どのファイルがアクティブであるかがわからないからです。
勇気がある場合は、crontab にコマンドを投入して、特定の期間よりも古いファイルを削除することもできますが、まだ使用されているファイルを削除すると、問題が発生する可能性があります。
のようなコマンドを試すことができます (私は試していません)。find /tmp -type f -ctime +10 -exec rm {} +
理論的には、/tmp の下にある 10 日より前のすべてのファイルが削除されます。
/tmp および /var/tmp ディレクトリは、通常のスケジュールで消去されます。これは、ディストリビューションに依存する場合があります。私の CentOS システム (RedHat のクローン) には、tmp dir クリーナーである tmpwatch を毎日のスケジュールで実行するようにスケジュールされた cron ジョブがあります。 /var/tmp 内のファイルは、/tmp/ 内のファイルよりも少し長く保存できます。すべてのプロセスが新しいため、そのファイルを開いたままにしておくものは何もないことを知っているため、再起動時に /tmp をプルーニングする (ただし明示的には /var/tmp をプルーニングしない) スクリプトも見てきました。
そうです、/tmp には基本的なスクリプトからのメンテナンスがあります。これらのメンテナンス時間外でも、満杯になる可能性があります。手動でクリーンアップすることを選択した場合、sysadmin のベスト プラクティスは注意することです。システム管理者の伝承は、n00b システム管理者が単純な find
を実行したときに削除された必要なシステム ファイルを指す /tmp 内のシンボリック リンクについて語っています。