web-dev-qa-db-ja.com

/ tmpはいつクリアされますか?

私はさまざまなファイルを/tmp、私はそれらを削除するルールについて疑問に思いましたか?

ディストリビューションによって異なると思いますが、特にUbuntuとFedoraのデスクトップバージョンに興味があります。

しかし、ニースを見つける一般的な方法は素晴らしいことです。

それを制御する素敵な一般的な方法はさらに良いでしょう! (「毎日午前3時、削除/tmp 60日以上経過したファイルですが、再起動時にディレクトリをクリアしません ')

156

それはあなたのディストリビューションに依存します。一部のシステムでは、ブート時にのみ削除され、他のシステムではn時間より古いアイテムの削除を実行するcronjobsがあります。

  • Debianのようなシステムの場合:起動時(ルールは/etc/default/rcSで定義されています)。
  • RedHatのようなシステム:年齢別(RHEL6は/etc/cron.daily/tmpwatchでした。RHEL7/ RHEL8とRedHatのようにsystemdで構成され、/usr/lib/tmpfiles.d/tmp.confで構成され、systemd-tmpfiles-clean.serviceによって呼び出されます)。
  • Gentoo /etc/conf.d/bootmiscで。
171
kba

CentOS(と私はFedoraを想定しています)では、tmpwatchというジョブが/etc/cron.dailyにあります。これは/usr/sbin/tmpwatchは、指定した時間内にアクセスされなかったファイルを削除します。つまり、デフォルトの動作では、ファイルのatimeを調べて、最近使用されたかどうかを評価します。

http://linux.die.net/man/8/tmpwatch

他のディストリビューション(およびインストール)では、/ tmpがtmpfsとしてマウントされている場合があります。これは、メモリ内ファイルシステムです。これは起動時にクリアされます。

26
cjc

私が使用しているUbuntu 11.10では、/etc/init/mounted-tmp.confpstart スクリプトがあります。それの始まりはこれを言います:

# mounted-tmp - Clean /tmp directory
#
# Cleans up the /tmp directory when it does not exist as a temporary
# filesystem.

description "Clean /tmp directory"

start on (mounted MOUNTPOINT=/tmp) or (mounted MOUNTPOINT=/usr)

詳細を読むことができますが、一般的には/tmpはマウントされているか/usrがマウントされているときにクリーンアップされます。これは起動時に定期的に発生するため、この/tmpクリーニングはすべての起動時に実行されます。

/etc/default/rcSにはTMPTIMEセットがあり、これは上記の初期化スクリプトで最後に2つのfindコマンドをフィードするために使用されます-基本的にファイルの削除を時間に基づいて制御します(変更された、変更、アクセス)。

14
icyrock.com

RHEL 6.2では、/ tmp内のファイルは、10日間アクセスされなかった場合、tmpwatchによって削除されます。

/etc/cron.daily/tmpwatchファイルは、tmpwatchの呼び出し方法を定義します。

#! /bin/sh
flags=-umc
/usr/sbin/tmpwatch "$flags" -x /tmp/.X11-unix -x /tmp/.XIM-unix \
    -x /tmp/.font-unix -x /tmp/.ICE-unix -x /tmp/.Test-unix \
    -X '/tmp/hsperfdata_*' 10d /tmp

-x引数は、除外されるファイルです。最後から2番目の引数は、最後にアクセスした時刻の後に待機する時間です。最後の引数は調べるディレクトリです。

5
johnjamesmiller

Fedora 18以降、/tmpはデフォルトでtmpfs(つまりRAM)にマウントされ、電源を切ると消去されます。

この動作は、systemctl mask tmp.mountを発行して再起動することで無効にでき(systemctl unmask tmp.mountを発行して再起動することで再起動できます)、次に/tmp/ファイルシステムにマウントされ、制御できるようになります。 /usr/lib/tmpfiles.d/tmp.conf設定。

それぞれのケースの詳細については、 http://fedoraproject.org/wiki/Features/tmp-on-tmpfs およびman tmpfiles.dを参照してください。

OpenSUSE 13.2では、クリア動作はsysconfigの以下の変数で制御できました。

  • MAX_DAYS_IN_TMP
  • MAX_DAYS_IN_LONG_TMP
  • TMP_DIRS_TO_CLEAR
  • LONG_TMP_DIRS_TO_CLEAR
  • OWNER_TO_KEEP_IN_TMP
  • CLEAR_TMP_DIRS_AT_BOOTUP

これらの変数は次のように変更できます(各変数の使用法もそこにあります)

  1. /etc/sysconfig/cronファイルをコマンドラインで手動で。
  2. Yastを開き、システム->/etc/sysconfigエディター->システム-> cronに移動します。
3
leodream

それを制御する素敵な一般的な方法はさらに良いでしょう! (「朝の3時に毎日、60日より前の/ tmpファイルをすべて削除しますが、再起動時にディレクトリをクリアしないでください」のようなもの)

起動時に消去したくないSorta-tempyファイルは/ var/tmpにあります

それはそれのためのものです:-)

2
nemo