У меня OpenSuSe 11.2 живет уже довольно долго, и пока что ее менять ни на что не собираюсь. Однако в директории /tmp скапливается очень много временных файлов, которые система по умолчанию чистить не хочет. Я уж подумывал над написанием скрипта, который бы при перезагрузке очищал бы содержимое /tmp, но как оказалось, это был бы неправильный подход к решению проблемы.
В системе для этого предусмотрен совсем другой механизм. В Yast имеется редактор /etc/sysconfig, в котором можно настроить периодичность очистки временных файлов, а так же список директорий с временными файлами. Если компьютер с OpenSuSe используется как десктоп, то очистки /tmp при перезагрузке вполне достаточно. Если же он месяцами не перезагружается, то настройка должна быть более тонкой.
В редакторе /etc/sysconfig внутри ветки System => Cron есть специальные переменные, которые все это регулируют. Мои настройки выглядят так:
MAX_DAYS_IN_TMP = 100
MAX_DAYS_IN_LONG_TMP = 100
TMP_DIRS_TO_CLEAR = /tmp
LONG_TMP_DIRS_TO_CLEAR = /var/tmp
OWNER_TO_KEEP_IN_TMP = root
CLEAR_TMP_DIRS_AT_BOOTUP = yes
Пишу в основном для себя, чтобы не забыть. Но если кому-то пригодится, буду рад.
CLEAR_TMP_DIRS_AT_BOOTUP = yes
Перекрывает все остальные настройки, при любой перезагрузке очищает полностью то что указано в “TMP_DIRS_TO_CLEAR”.
Поэтому либо все остальные настройки этого файла, либо CLEAR_TMP_DIRS_AT_BOOTUP = yes
Так и задумано. Если я перегружаю машину, /tmp будет очищена.
В противном случае дольше заданного времени они не проживут (а я поставил там 100 дней), не хочу внезапно потерять текщую сессию X-сервера из-за удаления временных файлов.
MAX_DAYS_IN_TMP указывает максимальное количество дней, когда не было обращений к файлу, который подлежит удалению. В скрипте /etc/cron.daily/suse.de-clean-tmp
происходит проверка через
find $DIR/. $OMIT ! -type d ! -type s ! -type p -atime +$MAX_DAYS -exec /usr/bin/safe-rm {} \;
где
$OMIT = Все пользователи, кроме указаных в OWNER_TO_KEEP_IN_TMP
$DIR = каталоги указаные в TMP_DIRS_TO_CLEAR и LONG_TMP_DIRS_TO_CLEAR
$MAX_DAYS = MAX_DAYS_IN_TMP и MAX_DAYS_IN_LONG_TMP соответственно.
Тоесть будут удалены все файлы которые не являются директориями, сокетами, именоваными каналами, не пренадлежат пользователям указаным в OWNER_TO_KEEP_IN_TMP, и имеют время последнего обращения больше указанного в MAX_DAYS_IN_TMP.
Так как сессия X-сервера пренадлежит root-у, то эти файлы не могут быть удалены, пользователь root указан в OWNER_TO_KEEP_IN_TMP.
Исходя из выше сказанного повторюсь, – нет смысла настраивать все переменные, для компьютера который регулярно перезагружается, если явно указываем CLEAR_TMP_DIRS_AT_BOOTUP = yes.
Для сервера нет смысла ставить CLEAR_TMP_DIRS_AT_BOOTUP = yes, зато удобнее настроить остальные переменные.
Судя по комментарию, у тебя runlevel = 5 ?
У меня не так, у меня runlevel = 3. Т.е. сервер стартует без X. И если я логинюсь под пользователем, и набираю startx, то сессия X у меня запускается от пользователя, а не от рута.
Для твоего случая действительно все переменные настраивать не надо. У меня же временные файлы просто затрутся по крону, если их не хранить требуемое число дней.