Как почистить / тмп?

74
rizhas@rizhas-laptop:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda7        67G   58G  5,2G  92% /
none            4,0K     0  4,0K   0% /sys/fs/cgroup
udev            1,5G   12K  1,5G   1% /dev
tmpfs           303M  1,2M  302M   1% /run
none            5,0M     0  5,0M   0% /run/lock
none            1,5G  348K  1,5G   1% /run/shm
none            100M   80K  100M   1% /run/user
overflow        1,0M  1,0M     0 100% /tmp
overflow        1,0M  1,0M     0 100% /tmp

Как убрать /tmp?

Rizhas
источник
1
Вероятно, ответил на Unix и Linux . Не уверен, что это делает этот вопрос дубликатом.
Drc
Нет @drc, но хорошая находка. Я использовал ссылку оттуда, чтобы обновить свой ответ.
Rinzwind
1
Смотрите также Как очищается каталог / tmp?
Восстановить Монику - М. Шредер
Связанный: unix.stackexchange.com/questions/11235/is-it-safe-to-rm-rf-tmp | superuser.com/questions/499039/…
Сиро Сантилли 新疆 改造 中心 C 六四 事件

Ответы:

117

/ tmp должен быть очищен при перезагрузке, но если вы не перезагрузитесь (что нормально для серверов), очистка не произойдет

find /tmp -ctime +10 -exec rm -rf {} +

удалит все файлы и папки старше 10 дней. Вы можете добавить его в ежедневный хрон.


ОБНОВИТЬ

В комментариях ниже @sfussenegger рекомендует немного другой формат этой команды, который может лучше соответствовать вашим потребностям и системе, в которой вы работаете.

sudo find /tmp -type f -atime +10 -delete

Здесь команда используется, sudoчтобы убедиться, что все удалено (или вы можете запустить его как root), работая с файлами, к которым не было доступа более 10 дней, и удаляя только файлы, а не папки . Он также использует, -deleteчтобы избежать необходимости выполнения rmкоманды

Андрей Р
источник
2
вместо времени создания (-ctime) вы можете вместо этого использовать время доступа (-atime) - конечно, только если файловая система хранит эту информацию (проверьте наличие noatime в / etc / fstab)
sfussenegger
7
хорошо, пожалуйста, потерпите меня, но есть еще одна вещь: вы хотите искать только файлы ( -type f). в противном случае вы можете обнаружить, что к родительскому дереву каталога не обращались некоторое время, и удалить весь его контент, который потенциально может все еще использоваться. итоговая команда, которую я бы порекомендовалsudo find /tmp -type f -atime +10 -delete
sfussenegger
2
@sfussenegger, возможно, вы могли бы продвинуть ваши комментарии к ответу? Я думаю, что это лучше, чем быть «скрытым» в комментариях.
Джонатан
34

Вы можете предположить, что все, что находится в каталоге tmp (/ tmp / / usr / tmp и т. Д.), Может быть удалено. ПЕРЕД тем, как вы начнете удалять, остановите все программы и службы, которые вы используете, поскольку / tmp / могут использоваться программами для временного хранения информации для этого сеанса. Так что sudo service mysql stopи sudo service apache2 stopесли у вас есть MySQL и / или Apache работает. Названия файлов в каталоге / tmp / чаще всего дают представление о том, к какой программе они принадлежат.

Так что из командной строки ...

cd /tmp/
pwd
sudo rm -r *

очистит каталог / tmp / и удалит все файлы и подкаталоги. Будьте осторожны, чтобы набрать его правильно. Команда pwdтам не обязательна, но должна отображаться /tmp.

Если вы хотите это в интерактивном режиме (поэтому вам нужно подтвердить удаление):

cd /tmp/
sudo rm -ri *

Также стоит отметить, что перезагрузка очистит / tmp так же, как показано здесь: Как очищается каталог / tmp? Поэтому, если / tmp / заполнен файлами после перезагрузки, вам нужно выяснить, откуда эти файлы происходят.

Я также хотел бы заявить, что 1 Мб для / tmp не много места. Вы используете MySQL? Смотрите https://unix.stackexchange.com/a/76058/10017 о том, как это исправить (спасибо @drc)

Rinzwind
источник
2
«без какого-либо вреда» верно для файлов, датируемых до последней перезагрузки. В противном случае он может использоваться текущей программой и (для этой программы) может вызвать проблемы ... например, у меня есть сценарии, которые создают файлы в / tmp, а затем перечитывают их для выполнения следующего шага (ов) обработки , удаление / усечение их между ними нарушит действия программы (и может даже привести к опасным результатам, в зависимости от того, для чего используются эти файлы)
Оливье Дюлак
... поэтому использование who –b(дата последней загрузки), а затем создание файла / времени загрузки, датированного во время загрузки ( touch ....... /boottime), позволит сделать безопасное find /tmp -type f \( ! -newer /boottime \) -delete \;, удалив только файлы старше, чем последняя загрузка
Оливье Дюлак
Могу ли я использовать эти комментарии, чтобы расширить ответ? Имейте в виду: / tmp здесь, вероятно, из MySQL.
Rinzwind
4
Как человек, mktempрегулярно использующий мои сценарии, я категорически не согласен с утверждением «без какого-либо вреда».
Hytromo
2
Если /tmpсодержит что-то старше, чем последняя перезагрузка, то сценарии запуска не выполнили свою работу.
Саймон Рихтер
10

tmpreaperПрограмма может использоваться для очистки / TMP периодически. Эта программа удаляет все, к чему не обращались в течение определенного периода времени, обычно две недели. Чтобы это работало правильно, в файловой системе должна быть atimesвключена опция. Если вы используете tmpfs , что, по-видимому, вы делаете, то все будет в порядке.

Конечно, перезагрузка также очищает / tmp , но это было бы скучно.

Саймон Рихтер
источник
Меня удивляет, что это не стандартная опция в Ubuntu и Debian. Я довольно часто сталкиваюсь с относительно непривилегированными пользовательскими процессами, заполняющими / tmp.
мудрец
1
Да, но это политика, которую должен установить системный администратор. Если у вас есть долгосрочные службы, которые ожидают, что их данные будут сохранены, любая установка по умолчанию, но «без очистки», будет опасной.
Саймон Рихтер
7

Каталог /tmpозначает временный.

В этом каталоге хранятся временные данные. Вам не нужно ничего удалять из него, содержащиеся в нем данные автоматически удаляются после каждой перезагрузки.

Еще если хочешь удалить имеющиеся в нем данные используй

sudo rm -r /tmp/*

удаление из него не вызовет никаких проблем, так как это временные файлы.

Tarun
источник
9
Они временны в том смысле, что они не нужны после перезагрузки, это не значит, что они не нужны прямо сейчас или что они не понадобятся через 5
минут
5
Это неправда, что это «не вызовет никаких проблем». Я сделал это один раз, прежде чем я знал лучше и в основном шланг моей машины.
Кайл Стрэнд
Также см. Unix.stackexchange.com/q/11235/38050
Кайл Стрэнд,
4

Будьте внимательны перед выполнением команды вроде rm -r ./*. Как только вы запустите его, будет очень трудно или невозможно восстановить какие-либо данные.

Все будет удалено. Убедитесь, что каталог, в котором вы удаляете, является правильным.

Есть более безопасный способ справиться с вещами.

# sudo rm -r /tmp/*

Таким образом, когда вы случайно запустите эту команду из своей оболочки history, она не удалит неправильные файлы (если вы не сохраните их /tmp).


источник
2

/tmpКаталог был очищен по умолчанию при каждой загрузке, потому что TMPTIMEэто 0по умолчанию.

Авинаш Радж
источник
1

Если ваше монтирование «/ tmp» в файловой системе linux монтируется как переполнение (часто размером 1 МБ), это, вероятно, связано с тем, что вы не указали «/ tmp» в качестве своего собственного раздела и ваша корневая файловая система заполнена, а «/ tmp» был перемонтирован как запасной вариант. Чтобы исправить это после того, как вы очистили пространство, просто размонтируйте запасной вариант, и он должен перемонтироваться в исходной точке:

sudo umount overflow

если устройство занято, используйте

sudo umount -l overflow
ск редди
источник