Arch linux はメモリーの半分の容量のスペースを tmp ファイルシステムとして /tmp にマウントする。例えば8GBのメモリを積んでいたら /tmp の容量はデフォルトで 4GB になる。試しに手元の環境で df
コマンドを実行すると以下のような情報が得られた:
# df -h
Filesystem Size Used Avail Use% Mounted on
dev 3.9G 0 3.9G 0% /dev
run 3.9G 384K 3.9G 1% /run
/dev/sda 158G 8.0G 142G 6% /
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
tmpfs 3.9G 12K 3.9G 1% /tmp
tmpfs 798M 0 798M 0% /run/user/0
/tmp ディレクトリは systemd-tmpfiles-clean.timer という Timer によってサーバー起動時や日次処理としてクリーンアップされる。デフォルトでは10日前のファイルを削除する設定になっていて、この動作を変更したい場合はカスタムの設定ファイルを用意する必要がある。
systemd の Timer は *.timer というファイルを元にタイマー制御された処理を動かす。タイマーによってキックされる実際の処理は同名の *.service というファイルに記述する。例えば systemd-tmpfiles-clean.timer に Timer としての設定があり、systemd-tmpfiles-clean.service に実際のコマンドが記述されている。systemd-tmpfiles-clean.service は systemd-tmpfiles コマンドを実行して一時ファイル等のクリーンナップを行っている。
systemd-tmpfiles コマンドが実際に tmp dir をクリーンアップしている
/usr/bin/systemd-tmpfiles --clean
以下を実行して config を確認できる
/usr/bin/systemd-tmpfiles --cat-config
例えば /tmp 以下のファイルで1日以上経過したものをクリーンナップするように設定したい場合は以下のようなファイルを用意する
/etc/tmpfiles.d/app.conf:
q /tmp 1777 root root 1d