Коли саме tmpwatch очищає файли, які я розміщую в / tmp?


14

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

Розділ у рядку 5, який читається, -X '/tmp/hsperfdata_*' 10d /tmpприводить мене до думки, що файли, які я розміщую в / tmp /, залишаться протягом 10 днів (якщо припустити, що вони не заблоковані під час видалення курсу або каталог встановлено у файловій системі tmpfs).

Це правильно?

Відповіді:


8

У CentOS 6, здавалося б, tmpwatchце базується на його рішенні видалити, коли останній доступ до файлу був (atime). Якщо минуло 10 днів (10d) або більше, вони буде видалено під час tmpwatchзапуску.

На tmpwatchчоловіковій сторінці:

    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.

Також зі сторінки чоловіка:

    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.

6

У RHEL7 / CENTOS7 є системна ціль, яка працює щодня: systemd-tmpfiles-clean.timer(на заміну /etc/cron.daily/tmpwatch). Значеннями за замовчуванням є OnBootSec=15minі OnUnitActiveSec=1d. Цитуючи сторінку man 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.

Де "Початок очищення" насправді означає "Повне".


Tmpwatch має приємну можливість використання fuser. Чи може це зробити системна версія?
CMCDragonkai

2
@CMCDragonkai, квітня 2015 року Леннарт Поеттерінг (розробник SystemD) сказав у списку розсилки systemd-devel : "ми не підтримуємо це [..] повторення через / proc просто надто погано. [..] ми можемо вважати це [інакше ] " потім він додав, що " чеки atime [..] повинні бути цілком достатніми. У вас є випадок, коли їх немає? "
Франклін Піат

Так, я задав це питання.
CMCDragonkai

1
@CMCDragonkai я цитував Lennart Poettering у списку розсилки. Відповідь йому (у списку)!
Франклін Піат
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.