Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Arch linux & systemd-tmpfiles-clean

/tmp on Arch Linux

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

systemd-tmpfiles-clean

/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 コマンド

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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment