【FreeBSD】/tmpディレクトリ配下のファイルを自動で削除したい

確認環境

   
PC Thinkpad X1 Carbon 2nd Gen
OS FreeBSD 12.1-RELEASE-p5

課題

気付けば/tmpディレクトリに大量の一時ファイルが溜まっている。。

自動で削除して欲しい。。。

対策

/etc/rc.conf/etc/periodic.confの設定で自動で削除するようになる。

PC起動時に一括で削除することもできるし、一定期間アクセスがないファイルだけ削除することもできる。

一括で削除したい場合(/etc/rc.conf)

/etc/rc.confに以下を追記すると、PC起動時に一括でファイルを削除するようになる。

clear_tmp_enable="YES"

X11関連のファイル

X11関連のファイルの削除と再構築をしない場合は、以下を追記。

clear_tmp_X="NO"

と、manには書いているように見えるのだが、NOを指定しても全部削除されている。
そして、PC起動時はたしかに再構築をしてなさげ。(/tmpディレクトリは空になっていた)

ちなみに僕の環境では、YESを指定した場合、起動時に再構築されているのは以下のディレクトリっぽい。

$ ls -la /tmp/
total 2
drwxrwxrwt  2 root  wheel  2  6月 16 17:13 .font-unix/
drwxrwxrwt  2 root  wheel  2  6月 16 17:13 .ICE-unix/
drwxrwxrwt  2 root  wheel  2  6月 16 17:13 .X11-unix/
drwxrwxrwt  2 root  wheel  2  6月 16 17:13 .XIM-unix/

指定期間アクセスがないファイルだけ削除したい場合(/etc/periodic.conf)

/etc/periodic.confに以下を追記すれば、一定期間アクセスがないファイルだけを削除できる。
期間はdaily_clean_tmps_daysで調整してねと。

daily_clean_tmps_enable="YES"        # 自動削除を有効にするなら`YES`
daily_clean_tmps_days="30"            # 削除対象とする無アクセス日数を指定
daily_clean_tmps_ignore="$daily_clean_tmps_ignore *.vim myfile"   # 削除しないファイルを指定

ちなみに設定用の変数は、毎日/毎週/毎月という周期ごとに用意されているっぽい。
各変数のPrefix(上の例ではdailyの部分)を変えればいい。

Prefix 周期
daily 毎日
weekly 毎週
monthly 毎月

デフォルトの無視ファイル

デフォルト(/etc/default/periodic.conf)では以下が削除非対象になっている。

daily_clean_tmps_ignore=".X*-lock .X11-unix .ICE-unix .font-unix .XIM-unix"
daily_clean_tmps_ignore="$daily_clean_tmps_ignore quota.user quota.group .snap"
daily_clean_tmps_ignore="$daily_clean_tmps_ignore .sujournal"

clear_tmp_enableとの優先度

/etc/rc.confclear_tmp_enable="YES"を指定している場合、
/etc/periodic.confの設定より優先されて一括で削除してそう。

ただ、マニュアルにそんな記載を見つけたというわけではないので、何か別に設定が必要なだけかも。

削除するディレクトリの指定

/tmp以外に削除したいディレクトリがある場合、以下で指定できるっぽい。
区切りは/etc/periodic/daily/110.clean-tmpsを見た感じ空白文字(シェルスクリプトのIFS)。

daily_clean_tmps_dirs="/tmp"         # 削除対象のルートディレクトリを指定

さいごに

ここまで調べた後に、一括削除でいい場合は/tmpをRAMに割り当てればいいことに気付く。

なんてこった。


以上。

参考