Как очищается каталог /tmp? Автоматически? Если да, то как часто он очищается?
Для 14.04 см. Https://askubuntu.com/a/759048/1366
Для 16.10 см. [D2] https://askubuntu.com/a/759048/1366
Старый ответ от 2011:
Очистка /tmp сделанный скриптом выскочки /etc/init/mounted-tmp.conf. Скрипт запускается выскочкой каждый раз, когда монтируется /tmp. Практически это означает при каждой загрузке.
Скрипт делает примерно следующее: если файл в /tmp старше $TMPTIME дней, он будет удален.
Значение по умолчанию из $TMPTIME равно 0, что означает, что каждый файл и каталог в /tmp удаляются. $TMPTIME - это переменная среды, определенная в /etc/default/rcS.
Для 14.04 см. Https://askubuntu.com/a/759048/1366
Для 16.10 см. [D2] https://askubuntu.com/a/759048/1366
Старый ответ от 2011:
Очистка /tmp сделанный скриптом выскочки /etc/init/mounted-tmp.conf. Скрипт запускается выскочкой каждый раз, когда монтируется /tmp. Практически это означает при каждой загрузке.
Скрипт делает примерно следующее: если файл в /tmp старше $TMPTIME дней, он будет удален.
Значение по умолчанию из $TMPTIME равно 0, что означает, что каждый файл и каталог в /tmp удаляются. $TMPTIME - это переменная среды, определенная в /etc/default/rcS.
В Ubuntu 14.04 это делается с помощью tmpreaper, который вызывается ежедневно cron (из /etc/cron.daily). Программу можно настроить через /etc/default/rcS и /etc/tmpreaper.conf.
Каталог по умолчанию очищается при каждой загрузке, потому что TMPTIME по умолчанию 0.
Здесь вы можете изменить время в следующем файле:
/etc/default/rcS
TMPTIME указывает, как частоту tmp dir может быть очищена в днях
В systemd Ubuntu (15.10 и новее) это делается systemd, используя службу systemd-tmpfiles-clean и таймер:
$ systemctl cat systemd-tmpfiles-clean.service
# /lib/systemd/system/systemd-tmpfiles-clean.service
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
[Unit]
Description=Cleanup of Temporary Directories
Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)
DefaultDependencies=no
Conflicts=shutdown.target
After=local-fs.target time-sync.target
Before=shutdown.target
[Service]
Type=oneshot
ExecStart=/bin/systemd-tmpfiles --clean
IOSchedulingClass=idle
И
$ systemctl cat systemd-tmpfiles-clean.timer
# /lib/systemd/system/systemd-tmpfiles-clean.timer
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
[Unit]
Description=Daily Cleanup of Temporary Directories
Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)
[Timer]
OnBootSec=15min
OnUnitActiveSec=1d
Таким образом, systemd-tmpfiles-clean работает при завершении работы и один раз в день в противном случае. Файлы, которые он очищает, могут быть расширены с помощью /etc/tmpfiles.d, упомянутого в другом ответе.
С помощью systemctl edit systemd-tmpfiles-clean.timer и с помощью различных конфигурационных параметров systemd Timer вы можете самостоятельно изменить поведение таймера (см. [D3] другое ответ ).
Я проверяю это на Ubuntu 16.10. Я могу подтвердить, что редактирование / etc / default / rcS больше не имеет никакого эффекта, и файлы в tmp уничтожаются при перезагрузке независимо от того, что вы вложили в этот файл. Как и другие, tmpreaper больше не используется.
Я считаю правильным ответ, что Ubuntu 16.10 имеет новую настройку. Существует папка /etc/tmpfiles.d, задокументированная на странице man «tmpfiles.d». В этой папке нужно поместить файл конфигурации, чтобы контролировать, будет ли / tmp удаляться. Это то, что я делаю, чтобы остановить перезагрузку из стирания файлов в / tmp, если им не исполнилось 20 дней:
#/etc/tmpfiles.d/tmp.conf
d /tmp 1777 root root 20d
Заменить «20d» на «-», если вы никогда не хотите, чтобы файлы были удалены. Это мое лучшее усилие, эта страница руководства почти непроницаема в деталях.
Преимущество новой установки заключается в том, что очиститель файлов может работать даже в том случае, если система не перезагружена (как в случае всегда на сервере). Думаю, это большой плюс.
На одном из наших серверов, на котором запущен Ubuntu, у нас есть скрипт для удаления файлов в / tmp, и он работает в ночное время.
Скрипт:
#!/bin/sh
# Clean file and dirs more than 3 days old in /tmp nightly
/usr/bin/find /tmp -type f -atime +2 -mtime +2 |xargs /bin/rm -f &&
/usr/bin/find /tmp -type d -mtime +2 -exec /bin/rm -rf '{}' \; &&
/usr/bin/find /tmp -type l -ctime +2 |xargs /bin/rm -f &&
/usr/bin/find -L /tmp -mtime +2 -print -exec rm -f {} \;
Просто сохраните содержимое выше в файл chmod 775 и создайте запись cron для ее запуска. Поскольку это веб-сервер, мы не хотим перезагружать его по понятным причинам.
Он очищается при каждом перезагрузке.
В Ubuntu 14.04 это делается с помощью tmpreaper, который вызывается ежедневно cron (из /etc/cron.daily). Программу можно настроить через /etc/default/rcS и /etc/tmpreaper.conf.
Каталог по умолчанию очищается при каждой загрузке, потому что TMPTIME по умолчанию 0.
Здесь вы можете изменить время в следующем файле:
/etc/default/rcS
TMPTIME указывает, как частоту tmp dir может быть очищена в днях
В systemd Ubuntu (15.10 и новее) это делается systemd, используя службу systemd-tmpfiles-clean и таймер:
$ systemctl cat systemd-tmpfiles-clean.service
# /lib/systemd/system/systemd-tmpfiles-clean.service
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
[Unit]
Description=Cleanup of Temporary Directories
Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)
DefaultDependencies=no
Conflicts=shutdown.target
After=local-fs.target time-sync.target
Before=shutdown.target
[Service]
Type=oneshot
ExecStart=/bin/systemd-tmpfiles --clean
IOSchedulingClass=idle
И
$ systemctl cat systemd-tmpfiles-clean.timer
# /lib/systemd/system/systemd-tmpfiles-clean.timer
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
[Unit]
Description=Daily Cleanup of Temporary Directories
Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)
[Timer]
OnBootSec=15min
OnUnitActiveSec=1d
Таким образом, systemd-tmpfiles-clean работает при завершении работы и один раз в день в противном случае. Файлы, которые он очищает, могут быть расширены с помощью /etc/tmpfiles.d, упомянутого в другом ответе.
С помощью systemctl edit systemd-tmpfiles-clean.timer и с помощью различных конфигурационных параметров systemd Timer вы можете самостоятельно изменить поведение таймера (см. [D3] другое ответ ).
Я проверяю это на Ubuntu 16.10. Я могу подтвердить, что редактирование / etc / default / rcS больше не имеет никакого эффекта, и файлы в tmp уничтожаются при перезагрузке независимо от того, что вы вложили в этот файл. Как и другие, tmpreaper больше не используется.
Я считаю правильным ответ, что Ubuntu 16.10 имеет новую настройку. Существует папка /etc/tmpfiles.d, задокументированная на странице man «tmpfiles.d». В этой папке нужно поместить файл конфигурации, чтобы контролировать, будет ли / tmp удаляться. Это то, что я делаю, чтобы остановить перезагрузку из стирания файлов в / tmp, если им не исполнилось 20 дней:
#/etc/tmpfiles.d/tmp.conf
d /tmp 1777 root root 20d
Заменить «20d» на «-», если вы никогда не хотите, чтобы файлы были удалены. Это мое лучшее усилие, эта страница руководства почти непроницаема в деталях.
Преимущество новой установки заключается в том, что очиститель файлов может работать даже в том случае, если система не перезагружена (как в случае всегда на сервере). Думаю, это большой плюс.
На одном из наших серверов, на котором запущен Ubuntu, у нас есть скрипт для удаления файлов в / tmp, и он работает в ночное время.
Скрипт:
#!/bin/sh
# Clean file and dirs more than 3 days old in /tmp nightly
/usr/bin/find /tmp -type f -atime +2 -mtime +2 |xargs /bin/rm -f &&
/usr/bin/find /tmp -type d -mtime +2 -exec /bin/rm -rf '{}' \; &&
/usr/bin/find /tmp -type l -ctime +2 |xargs /bin/rm -f &&
/usr/bin/find -L /tmp -mtime +2 -print -exec rm -f {} \;
Просто сохраните содержимое выше в файл chmod 775 и создайте запись cron для ее запуска. Поскольку это веб-сервер, мы не хотим перезагружать его по понятным причинам.
Он очищается при каждом перезагрузке.