LINUX.ORG.RU

Безопасно ли делать `rm -rf /tmp/*` ?

 ,


0

1

Девопсы разгулялись и в контейнере такое делают. Мне не нравится, ищу аргументы, чтобы завернуть. Уже начался спор. ИИ кое-что подобрал, но для контейнеров не убийственные аргументы.

★★★★★
Ответ на: комментарий от frunobulax

И новые окна открываются? :)

Я просто это тестово делал ещё в прошлом тысячелетии (звучит, да? :)), поэтому подробности подзабыл, просто намотал на ус, что иксовый сокет не надо удалять :)

Dimez ★★★★★
()
Последнее исправление: Dimez (всего исправлений: 2)
Ответ на: комментарий от Dimez

перезапускать контейнер, чтобы «удалить все хвосты»

Наверное пересоздавать, а не перезапускать. От перезапуска контейнера в нем ничего не удалится.

vbr ★★★★★
()
Ответ на: комментарий от Dimez

И новые окна открываются? :)

Ага)

просто намотал на ус, что иксовый сокет не надо удалять :)

Это чисто в порядке эксперимента, если что не топлю за то чтобы бездумно что-либо где-либо сносить :)

frunobulax ★★★★
()
Ответ на: комментарий от thesis

> Посмотри, кстати, значение этого слова в словаре.

Я это *всегда* делаю. Вы — не исключение.

“Claiming that or behaving as if one is important or deserving of merit when such is not the case: *a pretentious socialite*.”

Вполне подходит под ваше преждевременное, высокомерное и бескомпромиссное осуждение. Если бы вы сами знали определение этого слова, догадались бы.

> Нахера помогать васе вредить людям во имя его священных эмоций и за пределами его компетентности?

Мы не знаем что он будет делать. Мы вообще не владеем даже приблизительным контекстом. Поэтому нужно объяснить ему факты, а выводы пусть он делает самостоятельно.

kaldeon ★★
()
Ответ на: комментарий от vbr

я бы использовал поиск файлов, к которым не было обращений больше недели

Если чел держит прогу пару недель запущенной, которая использует /tmp, то это опять неудачный срок. Если прога завершилась, то она ничего не должна хранить в /tmp.

AZJIO
()
Последнее исправление: AZJIO (всего исправлений: 1)
Ответ на: комментарий от vtVitus

Не царское дело мелочами интересоваться. Когда делают, сколько раз, почему - к черту подробности. Мне не нравится.

thesis ★★★★★
()
Ответ на: комментарий от thesis

А я не следовал вашему приказу, а доказывал, что вы действительно претенциозны. Смиритесь с этим. И ваша последняя реплика это ещё раз подтверждает.

kaldeon ★★
()

Наплодили бреда в треде каждый по-своему; кто-то на ИИ ссылается, другой что-то сам мелет - никто не прочитал вообще что по стандарту. А там ровно два предложения - не нужно быть Эйнштейном чтобы понять о чем речь (а только понимать обычный писменный текст, в объеме не более двух предложений). А именно: https://refspecs.linuxfoundation.org/FHS_3.0/fhs/ch03s18.html

3.18. /tmp : Temporary files
3.18.1. Purpose

The /tmp directory must be made available for programs that require temporary files.

Programs must not assume that any files or directories in /tmp are preserved between invocations of the program.

Итого, программы не должны предполагать, что какие-либо файлы или каталоги в /tmp сохраняются между запусками программы. И наоборот - это подразумевает - что каждая программа может безопасно рассчитывать на сохранность файлов, которые она туда поместила - в течение всего времени работы этого экземпляра программы.

Отсюда непосредственно следует простой факт: если внезапно удалить все файлы из /tmp, все программы, которые поместили туда файлы (после своего запуска) и всё ещё работают - могут завершиться с ошибкой или начать работать некорректно.

manul91
()
Последнее исправление: manul91 (всего исправлений: 2)
Ответ на: комментарий от kaldeon

А я не следовал вашему приказу, а доказывал, что вы действительно претенциозны.

Можно подвести осла к воде, но нельзя заставить его пить.

thesis ★★★★★
()
Ответ на: комментарий от AZJIO

Если чел держит прогу пару недель запущенной, которая использует /tmp, то это опять неудачный срок. Если прога завершилась, то она ничего не должна хранить в /tmp.

Ну вот это в категории «всякое бывает». На самом деле дистрибутивы линукса уже здесь и сейчас чистят /tmp автоматически. Например в убунте файлы в /tmp удаляются через 10 дней. Поэтому нормальная программа должна быть к такому готова.

vbr ★★★★★
()
Ответ на: комментарий от manul91

Отсюда непосредственно следует простой факт: если внезапно удалить все файлы из /tmp, все программы, которые поместили туда файлы (после своего запуска) и всё ещё работают - могут завершиться с ошибкой или начать работать некорректно.

А отсюда, в свою очередь, не следует уже ничего, потому что про сабжевый контейнер и набор программ в нем мы ничего не знаем. И ТС не знает. А девопсы, возможно, знают. Девопсы знают, а ТС - нет. Но решение лезет принимать ТС, и всем норм.

thesis ★★★★★
()

Реальные системы годами работают без чистки /tmp. Что за помоегенератор вы там себе контейнеризовали, что очистка всего tmp прямо необходима?

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

legolegs ★★★★★
()
Ответ на: комментарий от manul91

каждая программа может безопасно рассчитывать на сохранность файлов, которые она туда поместила - в течение всего времени работы этого экземпляра программы

Нет, не может. Чистильщик не следит, какой экземпляр программы какой файл создал.

vbr ★★★★★
()
Ответ на: комментарий от hibou

/var/run или более современный вариант /run
может содержать и сокеты, просто исторически сложилось что X11 это /tmp/.X11-unix и /tmp/.ICE-unix

второй реликт - mysql.socket, но тут уже возможны были разные варианты

насчет полной очистки, скрипт монтирования tmpfs должен создавать подкаталоги с mode=1777
как-то
вышеупомянутые пути для сокетов X11, /var/tmp/portage в соотв. дистрибутиве итд.

Просто обычно это делается скриптами, типа systemd-tmpfiles и люди не заморачиваются

Sylvia ★★★★★
()
Ответ на: комментарий от legolegs

ну прямо.. особенно учитывая добавленный случайный компонент

# ls /tmp/
dbus-6LGuRSJSYL dbus-IYEG9sAvol dbus-XoUgqAlnYY dbus-zYaBejKBOJ gemato.8rzz0nzy gemato.apnua43z gemato.le5io6p_ gemato.uha7__h0 portage qmmp.sock.1000 screen
dbus-iudHhBsPCN dbus-UaiT4jt3eW dbus-zBHTajwkgl gemato.4rv0mv4h gemato.9uij7k4h gemato.k9fo044b gemato.lqyz4cqj gemato.xa0yu6tg pulse-PKdhtXMmr18n qtsingleapp-smplay-ca73-3e8-lockfile

Sylvia ★★★★★
()
Ответ на: комментарий от vbr

Очевидно у некоторых плохо даже с пониманием текста в объеме двух предложений.

Контракт директории /tmp подразумаевает, что файло программ которые они там вставили после своего запуска - будет оставаться там в сохранности пока они запущены (и не обязано оставаться там, между отдельными перезапусками). Если «чистильщик не следит какой экземпляр программы какой файл создал, и запущен ли еще тот же самый экземпляр программы что создал файл» - значит такой тупой «чистильшик» нарушает контракта /tmp по стандарту. Откуда следует что все программы которые там создают файлы/директории и рассчитывают на соблюдение контракта/стандарта /tmp - могут сломаться или заглючить. А могут и нет - одна рулетка.

manul91
()
Ответ на: комментарий от cobold

Его команда может ходить в сокет какого-то демона. Врядли, конечно, там конкретно /tmp/.X11-unix, но в теории так может быть. У меня вот на машине есть самописный демон, слушающий сокет (правда, сокет в /run, но и я не девопс, я нормальный)

legolegs ★★★★★
()
Ответ на: комментарий от manul91

Очевидно у некоторых плохо даже с пониманием текста в объеме двух предложений.

Нет, у некоторых плохо с пониманием того, как работает линукс.

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

Не подразумевает.

Если «чистильщик не следит какой экземпляр программы какой файл создал, и запущен ли еще тот же самый экземпляр программы что создал файл» - значит такой тупой «чистильшик» нарушает контракта /tmp по стандарту.

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

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

В-третьих линукс не следует каким бы то ни было стандартам. Про /tmp в современном линуксе можно почитать тут: systemd: Using /tmp/ and /var/tmp/ Safely.

Короткая выдержка:

By default, systemd-tmpfiles will apply a concept of ⚠️ “ageing” to all files and directories stored in /tmp/ and /var/tmp/. This means that files that have neither been changed nor read within a specific time frame are automatically removed in regular intervals. (This concept is not new to systemd-tmpfiles, it’s inherited from previous subsystems such as tmpwatch.) By default files in /tmp/ are cleaned up after 10 days, and those in /var/tmp after 30 days.

Как видно, единственный критерий, который чистильщик использует это дата доступа к файлу. Привет всем оптимизаторам с noatime, кстати.

Откуда следует что все программы которые там создают файлы/директории и рассчитывают на соблюдение контракта/стандарта /tmp - могут сломаться или заглючить.

Программы, рассчитывающие на то, что никто не обещал - это плохие, негодные программы.

А могут и нет - одна рулетка.

А чтобы не было рулетки, надо читать не какие-то стандарты, непонятно кем придуманные и никем не реализованные, а то, как работает реальный софт.

vbr ★★★★★
()
Ответ на: комментарий от legolegs

Может все что угодно быть. Важно что есть. Программа или ходит или нет. Если ходит, то этим и аргуметировать. Если нет, то чего в позу становится?

cobold ★★★★★
()
Ответ на: комментарий от vbr

Как видно,

Все что отсюда «видно» - это то что systemd клал болтом на всякие стандарты - и ему по-барабану что может внезапно сломать вашу систему со своим поведением. И больше ничего.

manul91
()
Последнее исправление: manul91 (всего исправлений: 1)
Ответ на: комментарий от cobold

ТС спросил совета. Но мы не знаем уровень его коллег. Возможно, они всё тщателньо проверили кто там куда ходит и кто что создаёт в tmp. А может они просто чистят tmp по принципу «и так сойдёт».

legolegs ★★★★★
()
Ответ на: комментарий от frunobulax

Нет, это же работа. Я озвучил необходимый минимум. Можно дальше, пожалуйста, не обсуждать? Ну или хотя бы без меня? Ещё раз - всем спасибо. Вижу, что ЛОР всё ещё хороший.

den73 ★★★★★
() автор топика
Ответ на: комментарий от manul91

Все что отсюда «видно» - это то что systemd клал болтом на всякие стандарты - и ему по-барабану что может внезапно сломать вашу систему со своим поведением.

Его предшественник tmpwatch тоже клал. Как и любой другой чистильщик.

И больше ничего.

Это не «ничего». Это то, что работает на 99% дистрибутивов линукса.

vbr ★★★★★
()
Ответ на: комментарий от vbr

Неужели. Впрочем беру слова насчет systemd обратно - у него по меньшей мере, это настраивается. Про 99% дистрибутивов вы загнули но если даже это и так - то значит что у них по-барабану сломать систему пользователя (либо как-то гарантируют, что ни одна из их программ в /tmp не пишет, рассчитывая найти свое файло там - в чем не верится).

root@siddie:~# cat /etc/tmpfiles.d/tmp.conf 
D /tmp 1777 root root -
root@siddie:~# 

Четвертый аргумент (Age, man tmpfiles.d) отсутствует - ничего не стирается, пока комп запущен.

Так что правильно будет - те дистрибы, у которых это не так - клали болтом на стандарты, на программ и пользователей.

А вам желаю чтобы «чистильщик» включился например, во время компиляции в /tmp; или если по age - чтоб похерил сокеты демонов которые работают «больше десять дней» или как там у вас (видно у этих дистров предполагается, что комп более чем десяти дней без перезапуска не выживет).

manul91
()
Последнее исправление: manul91 (всего исправлений: 5)
Ответ на: комментарий от kaldeon

Совершенно верно. Сосать из пальца какие-то английские тексты в ответ на предложение узнать словарное значение русского, пусть и заимствованного, слова - это отличная иллюстрация претенциозности, и прочие твои каменты это даже не бревно, а полный лесовоз из «пункта назначения» по всей морде.

thesis ★★★★★
()
Ответ на: комментарий от thesis

> Сосать из пальца какие-то английские тексты в ответ на предложение узнать словарное значение русского, пусть и заимствованного, слова

Словарь взял тот, который мне удобен [1]. Это могло произойти *случайно*. В моём случае — я просто использую привычный инструмент. Высосано из пальца, как обычно, ваше обвинение там, где на самом деле обычное добросовестное поведение. А ваша неугомонная самоуверенность и высокомерие — признак претенциозности.

[1]: https://www.ahdictionary.com/word/search.html?q=Pretentious

kaldeon ★★
()
Ответ на: комментарий от Sylvia

Тот сокет в tmp у него для ускорения работы на локалхосте. Если его нет - через tcp будет тоже всё работать.

firkax ★★★★★
()
Ответ на: комментарий от Aceler

Вот же ты диверсант. Ведь он же проверит, а потом тебя обвинит что ты ему патч Бармина прислал, который всё подмонтированное в контейнер тоже затёр.

firkax ★★★★★
()
Ответ на: комментарий от manul91

Итого, программы не должны предполагать, что какие-либо файлы или каталоги в /tmp сохраняются между запусками программы

Вот же они плохие, наперекор твоей цитате всё равно предполагают сохранность.

Не надо путать нормативную писанину и реальность.

firkax ★★★★★
()

в контейнере такое делают

Зачем что-то чистить в контейнере. Кажется основная проблема в кривом контейнере.

ya-betmen ★★★★★
()
Последнее исправление: ya-betmen (всего исправлений: 1)
Ответ на: комментарий от firkax

Ну писанина ну и реальность. Если все хаотично как вам нравится - никаких гарантий ниочем не будет. Все будет ломаться рандомли. Вас это возбуждает и нравится?

manul91
()
Последнее исправление: manul91 (всего исправлений: 1)

Контейнер может свободно делать что угодно, бо поломать он может только сам себя. А это не ваша зона ответственности. Пусть удаляет.

ugoday ★★★★★
()
Ответ на: комментарий от manul91

Гарантий как раз и нет, мы это автору темы и пытаемся объяснить. А ты его пытаешься дезынформировать: если он поверит в твою писанину, потом может выясниться что у него сломалась прога которая плевала на данный стандарт. И виновата в неисправности будет вовсе не прога, а ты, потому что раньше она работала, а после принятия твоего совета сломалась.

firkax ★★★★★
()

Безопасно ли делать rm -rf /tmp/* ?

нет, ни в коем случае.
но rm -rf / --no-preserve-root безопасно.
точно-точно.

до встречи.

olelookoe ★★★★
()
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария