CentOS 6.x
/ tmp /に配置したファイルが正確に削除されると、混乱します。
/etc/cron.daily/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
/usr/sbin/tmpwatch "$flags" 30d /var/tmp
for d in /var/{cache/man,catman}/{cat?,X11R6/cat?,local/cat?}; do
if [ -d "$d" ]; then
/usr/sbin/tmpwatch "$flags" -f 30d "$d"
fi
done
-X '/tmp/hsperfdata_*' 10d /tmp
を読み取る5行目のセクションは、/ tmp /に配置したファイルが10日間残っていると信じさせます(もちろん、削除中にファイルがロックされていないか、ディレクトリがtmpfsファイルシステムにマウントされている場合) )。
あれは正しいですか?
CentOS 6では、tmpwatch
は、ファイルが最後にアクセスされたとき(一度に)に削除するという決定に基づいているようです。 10日(10日)以上経過している場合は、tmpwatch
の実行時に削除されます。
tmpwatch
manページから:
By default, tmpwatch dates files by their atime (access time), not
their mtime (modification time). If files aren't being removed when
ls -l implies they should be, use ls -u to examine their atime to see if
that explains the problem.
また、manページから:
The time parameter defines the threshold for removing files. If the
file has not been accessed for time, the file is removed. The time
argument is a number with an optional single-character suffix specifying
the units: m for minutes, h for hours, d for days. If no suffix is
specified, time is in hours.
RHEL7/CENTOS7には、毎日実行されるsystemdターゲットがあります:systemd-tmpfiles-clean.timer
(交換する /etc/cron.daily/tmpwatch
)。デフォルト値は両方ともOnBootSec=15min
およびOnUnitActiveSec=1d
。引用 systemd.timer マンページ:
OnBootSec =は、マシンがいつ起動されたかに関連するタイマーを定義します。
OnUnitActiveSec =は、タイマーがアクティブにしているユニットが最後にアクティブになったときを基準にタイマーを定義します。
そのため、/ tmpは毎日、おおよそシステムのブート時にクリーンアップされるようになったので、時刻は未定義です。大規模な展開では、すべての仮想マシンが同時にクリーンアップを実行するわけではありません、ニース。
履歴については、次を実行:
$ journalctl -u systemd-tmpfiles-clean
Mar 12 21:44:17 c7.klabs.be systemd[1]: Starting Cleanup of Temporary Directories...
Mar 12 21:44:18 c7.klabs.be systemd[1]: Started Cleanup of Temporary Directories.
「クリーンアップ開始」は実際には「完全」を意味します。