GNU/Linux >> Linux の 問題 >  >> Linux

/tmp の内容を手動で削除する必要がありますか?

質問に答えるには:

  • /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 内のシンボリック リンクについて語っています。


Linux
  1. /usr/sbin、/usr/local/sbin、/usr/local/bin の意味は何ですか?

  2. Linux の一時ディレクトリはどこにありますか?

  3. /dev/shm/ の内容が自動的に削除されるのはなぜですか

  1. /tmp と /run の違いは何ですか?

  2. /dev/tcp を使用するために < または > が必要な理由

  3. デフォルトの /tmp を /home/user/tmp に変更する方法

  1. Linuxの/tmpディレクトリを上司のように管理する

  2. Linuxは複数の連続したパスセパレーター(/ home //// username /// file)をどのように処理しますか?

  3. /tmp と /var/tmp の違いと正しい使い方