Каталог /tmp в Linux: очистка, место на диске и безопасность
Каталог /tmp в Linux хранит временные файлы программ, и в 2026 году в Fedora, Arch и Debian 13 он по умолчанию живёт в оперативной памяти, а старые файлы удаляет таймер systemd. Ниже - как проверить свою схему, безопасно почистить /tmp, ограничить его размер и восстановить права, если каталог удалён.

Содержание
Зачем нужен каталог /tmp
Каталог /tmp - общее место для временных файлов. Туда пишут распаковщики архивов, браузеры при загрузке, компиляторы, установщики, офисные пакеты при автосохранении, скрипты администратора. По стандарту иерархии файловой системы (FHS) программа не должна рассчитывать, что её файл в /tmp переживёт перезагрузку или даже следующий запуск.

В 2021 году типичная домашняя система держала /tmp на диске и чистила его при загрузке. В 2026 году картина другая: в Fedora, Arch и Debian 13 каталог по умолчанию живёт в оперативной памяти (tmpfs), а старые файлы удаляет таймер systemd. Поэтому вопрос может ли /tmp переполниться теперь звучит как сколько памяти он может съесть.
Узнать, как устроено у вас, можно двумя командами:
findmnt /tmp
df -h /tmpЕсли в столбце FSTYPE стоит tmpfs, каталог в памяти. Если команда findmnt ничего не вывела, /tmp лежит на корневом разделе обычной папкой.
/tmp, /var/tmp и другие временные каталоги
Главная разница - в сроке жизни. /tmp для того, что можно потерять в любой момент. /var/tmp для временных данных, которые должны пережить перезагрузку: например, промежуточные файлы долгой сборки или кэш установщика. Есть ещё два места, о которых в старой статье не говорилось.
| Каталог | Где хранится | Перезагрузка | Автоочистка (systemd) | Для чего |
|---|---|---|---|---|
/tmp | RAM (tmpfs) или диск | обычно очищается | файлы старше 10 дней | короткоживущие файлы любых программ |
/var/tmp | диск | сохраняется | файлы старше 30 дней | временные данные, которые нужны после перезагрузки |
/run/user/UID | RAM | очищается, удаляется при выходе | нет, живёт с сеансом | сокеты и служебные файлы сеанса пользователя |
/dev/shm | RAM | очищается | нет | разделяемая память между процессами |
Сроки 10 и 30 дней берутся из файла /usr/lib/tmpfiles.d/tmp.conf, который поставляет systemd. Отсчёт идёт от последнего обращения к файлу, а не от создания, так что файл, которым программа регулярно пользуется, не исчезнет. В отдельных дистрибутивах значения могут быть переопределены, проверяйте свой файл:
cat /usr/lib/tmpfiles.d/tmp.conf
ls /etc/tmpfiles.d/Как устроен /tmp в Debian 13, Ubuntu, Fedora и Arch
- Debian 13 перевёл
/tmpв tmpfs на новых установках и включил чистку: в/tmpудаляется всё старше 10 дней, в/var/tmpстарше 30. На системах, обновлённых с Debian 12, tmpfs включается после первой перезагрузки, а для чистки обновление создаёт файл/etc/tmpfiles.d/tmp.confсо старым поведением. Удалите его, если хотите новую схему. - Fedora держит
/tmpв памяти уже больше десяти лет, Fedora 44 здесь ничего не меняла. - Arch Linux использует юнит
tmp.mountиз systemd, то есть tmpfs по умолчанию. - Ubuntu и Linux Mint в разных выпусках вели себя по-разному, а при обновлении с 24.04 до 26.04 LTS поведение зависит от того, как была сделана установка. Не гадайте, проверьте
findmnt /tmpи состояние юнита.
systemctl status tmp.mount
systemctl list-timers systemd-tmpfiles-clean.timerТаймер systemd-tmpfiles-clean.timer запускается вскоре после загрузки и затем раз в сутки. Именно он удаляет старые файлы на серверах, которые не перезагружаются месяцами. Как читать статусы юнитов, разобрано в статье про systemctl.
Может ли /tmp заполниться и сколько памяти он берёт
Может, и довольно легко. Распаковка большого архива, сборка ядра, видеоредактор или загрузка образа диска способны за минуты положить в /tmp десятки гигабайт. Если каталог на диске, кончится место на корневом разделе. Если в tmpfs, программа получит ошибку No space left on device, хотя на SSD свободно полтерабайта.
По умолчанию tmpfs под /tmp ограничен половиной оперативной памяти. Память занимается только реально записанными файлами, пустой tmpfs ничего не стоит. При нехватке RAM содержимое tmpfs может уйти в swap, так что связка с zram и swap тоже влияет на поведение.
Посмотреть, кто занял место:
sudo du -xh --max-depth=1 /tmp | sort -h | tail -n 15Изменить предел для tmpfs проще всего через дополнение к юниту:
sudo systemctl edit tmp.mount
# в открывшемся редакторе:
[Mount]
Options=mode=1777,strictatime,nosuid,nodev,size=4G,nr_inodes=1mПосле перезагрузки проверьте df -h /tmp. Если вы хотите вернуть /tmp на диск, например на машине с 8 ГБ памяти, где часто распаковываются огромные архивы, юнит маскируется:
sudo systemctl mask tmp.mount
sudo rebootОткат - sudo systemctl unmask tmp.mount и снова перезагрузка.
Для разовой тяжёлой работы не обязательно перенастраивать систему. Многие программы уважают переменную TMPDIR: TMPDIR=~/tmp-big tar -xf huge.tar или сборка через TMPDIR=/var/tmp make. Так временные файлы лягут на диск, а /tmp в памяти останется свободным.
Как безопасно очистить /tmp вручную
Команда sudo rm -rf /tmp/* на работающей системе - плохая идея. В /tmp лежат сокеты X11 и Wayland, блокировки, файлы открытых программ. Удалите их, и рабочий стол может перестать запускать новые окна, а программа потеряет документ, который сейчас редактируется.
Правильные варианты по возрастанию решительности:
- Перезагрузка. Если
/tmpв tmpfs, он начнётся с чистого листа. - Плановая чистка по правилам systemd, ровно то, что делает таймер:
sudo systemd-tmpfiles --clean - Удаление своих старых файлов, без чужих сокетов и без перехода на другие файловые системы:
find /tmp -mindepth 1 -user "$USER" -type f -atime +3 -print # проверили список, теперь удаляем find /tmp -mindepth 1 -user "$USER" -type f -atime +3 -delete
Бывает, что файл уже удалён, а место не освободилось. Значит, его держит открытым какой-то процесс. Найти его помогает lsof:
sudo lsof +L1 | grep /tmpПерезапустите найденную программу, и место вернётся. Если /tmp не главная проблема, а диск всё равно забит, пройдитесь по списку из статьи как освободить место на диске, там же про кэш пакетов и журналы.
Как изменить срок хранения временных файлов
Правила systemd-tmpfiles переопределяются файлом с тем же именем в /etc/tmpfiles.d/. Системный файл в /usr/lib трогать не нужно, его перезапишет обновление.
sudo cp /usr/lib/tmpfiles.d/tmp.conf /etc/tmpfiles.d/tmp.conf
sudoedit /etc/tmpfiles.d/tmp.confСтроки в файле выглядят так: тип, путь, права, владелец, группа, возраст. Например, чтобы чистить /tmp через три дня, а /var/tmp через две недели:
q /tmp 1777 root root 3d
q /var/tmp 1777 root root 14dПрочерк вместо возраста отключает автоудаление для каталога. Проверить синтаксис без реального удаления можно командой sudo systemd-tmpfiles --cat-config | less, она покажет итоговую конфигурацию со всеми переопределениями. Формат подробно описан в man tmpfiles.d на freedesktop.org.
Безопасность: sticky bit, PrivateTmp и noexec
В /tmp пишут все пользователи, поэтому у каталога особые права 1777. Единица в начале - sticky bit: писать может каждый, но удалить или переименовать файл может только его владелец. В выводе ls -ld /tmp это видно по букве t в конце: drwxrwxrwt. Подробнее о битах прав рассказано в статье про chmod и chown.
Ещё несколько механизмов, которые работают в современных системах:
- Защита ссылок. Параметры ядра
fs.protected_symlinksиfs.protected_regularне дают подсунуть чужую символическую ссылку или файл в общем каталоге. Проверка:sysctl fs.protected_symlinks fs.protected_regular, обе должны быть больше нуля. - PrivateTmp. Многие службы systemd получают собственный изолированный
/tmp. Поэтому файл, который пишет веб-сервер, вы не найдёте в общем/tmp: он лежит в каталоге вида/tmp/systemd-private-*. Снапы делают похожее через/tmp/snap-private-tmp. - Скрипты. Не создавайте файлы с предсказуемыми именами вроде
/tmp/backup.txt. Используйтеmktemp:f=$(mktemp)для файла,d=$(mktemp -d)для каталога. - noexec. На серверах
/tmpиногда монтируют с запретом запуска файлов. Это мешает простым атакам, но ломает некоторые установщики. Им можно указать другойTMPDIR.
Что делать, если каталог /tmp удалён
Случается при неаккуратной чистке. Каталог восстанавливается за минуту, главное - вернуть правильные права, иначе программы начнут сыпать ошибками доступа:
sudo mkdir /tmp
sudo chmod 1777 /tmp
ls -ld /tmp # должно быть drwxrwxrwt root rootМожно поручить это systemd, он создаст каталог с правами из конфигурации: sudo systemd-tmpfiles --create. После этого перезагрузитесь, чтобы все программы и службы заново открыли свои временные файлы. Если /tmp у вас в tmpfs, удалить сам каталог-точку монтирования на работающей системе обычно не получится, а после перезагрузки он появится снова.
Частые вопросы
Можно ли удалять файлы из /tmp?
Свои старые файлы можно. Удалять всё подряд на работающей системе не стоит: там сокеты и файлы открытых программ. Надёжнее перезагрузиться или выполнить sudo systemd-tmpfiles --clean.
Через сколько очищается /tmp?
По правилам systemd файлы в /tmp удаляются через 10 дней без обращений, в /var/tmp через 30. Если /tmp в tmpfs, он очищается и при каждой перезагрузке.
Сколько памяти занимает /tmp в tmpfs?
Только объём реально записанных файлов. Верхний предел по умолчанию - половина оперативной памяти, его можно изменить через systemctl edit tmp.mount.
Как вернуть /tmp на диск?
Выполните sudo systemctl mask tmp.mount и перезагрузитесь. Отменяется командой unmask.
Какие права должны быть у /tmp?
1777, то есть drwxrwxrwt с владельцем root. Буква t означает sticky bit.
Документация и источники
- tmpfiles.d - Configuration for creation, deletion and cleaning of files, systemd / freedesktop.org, 2026
- Release Notes for Debian 13 (trixie): /tmp in tmpfs, Debian, 2025
- Tmpfs, ArchWiki, 2026
- Filesystem Hierarchy Standard 3.0, Linux Foundation, 2015
Читайте также
- Как освободить место на диске в Linux и найти, что его съело
- Права доступа в Linux: chmod, chown и разбор Permission denied
- ZRAM и swap в Linux: как настроить память, чтобы система не тормозила
- systemctl в Linux: управление службами и автозагрузкой
- Журнал systemd занимает диск: как очистить и ограничить journald
Команды проверены на актуальных версиях дистрибутивов на момент обновления. Перед изменением системных настроек сделайте резервную копию.