Как предотвратить очистку папки внутри / tmp?

Этот вопрос касается Ubuntu 14.10 на моем ноутбуке для разработчиков.

У меня есть папка в /tmp, которая используется приложением для размещения там временных вещей. Это приложение обычно создает временную папку в моем домашнем каталоге и впоследствии удаляет ее. По некоторым причинам это не работает, когда homedir зашифрован. Поэтому вместо этого я сделал символическую ссылку на /tmp/foo внутри моего homedir. Мое приложение может написать туда и сделать его временной подпапкой.

Теперь /tmp/foo удаляется при каждой перезагрузке компьютера. До сих пор я просто заново создавал папку после перезагрузки. Теперь в я узнал, как очищается каталог / tmp? , что для этого есть работа.

Я посмотрел на /etc/init/mounted-tmp.conf, но моего bashfu и особенно моего findfu недостаточно, чтобы делать то, что я хочу. Вот выдержка из этого файла:

   EXCEPT='! -name .
            ! ( -path ./lost+found -uid 0 )
            ! ( -path ./quota.user -uid 0 )
            ! ( -path ./aquota.user -uid 0 )
            ! ( -path ./quota.group -uid 0 )
            ! ( -path ./aquota.group -uid 0 )
            ! ( -path ./.journal -uid 0 )
            ! ( -path ./.clean -uid 0 )
            ! ( -path "./...security*" -uid 0 )'

   # Remove all old files, then all empty directories
   find . -depth -xdev $TEXPR $EXCEPT ! -type d -delete
   find . -depth -xdev $DEXPR $EXCEPT -type d -empty -delete

Что я хочу сделать, это добавить условие, которое заставляет его удалять все внутри /tmp/foo, но не сам /tmp/foo. Как мне это сделать?

12
задан 13 April 2017 в 15:24

5 ответов

/etc/init/mounted-tmp.conf часть mountall пакет, таким образом, любые обновления на том пакете и предложенных изменениях вернутся.

$ sudo dpkg -S /etc/init/mounted-tmp.conf 
mountall: /etc/init/mounted-tmp.conf

Вместо этого согласно Файловая система стандарт Hierachy (FHS) ;

Относительно /tmp:

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

Относительно /var/tmp:

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

, Таким образом, необходимо изменить символьную ссылку для использования /var/tmp вместо /tmp.

0
ответ дан 13 April 2017 в 15:24

Не строго ответ на Ваш вопрос, но Вы могли бы найти /var/tmp быть более подходящим местоположением, поскольку это не становится очищенным по перезагрузке. Это разработано для временных файлов, которые не должны быть автоматически отброшены после короткого времени.

то, Что я часто делаю, однако, создают меня, папка под / решила сохранить случайные вещи, которые я не хочу в доме. Это - подходящее место для помещения вещей, которые являются вне управления основной ОС.

0
ответ дан 13 April 2017 в 15:24

Как так:

EXCEPT='! -name .
            ...
            ! ( -path "./foo" )'

   # Remove all old files, then all empty directories
   ...
   find /tmp/foo/* -depth -xdev $TEXPR -delete

Пример:

$ cd /tmp/foo/
$ mkdir 1 2 3
$ touch 3 4 5
$ find /tmp/foo/* -depth -xdev $TEXPR -delete
$ ls /tmp/foo/
$

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

0
ответ дан 13 April 2017 в 15:24

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

сенсорный/tmp/foo/ddmmyy/.001_immute_me chattr +i/tmp/foo/ddmmyy/.001_immute_me

0
ответ дан 13 April 2017 в 15:24

Выполнение это:

echo "if [ ! -e /etc/foo/ ]; then mkdir /etc/foo/; fi; rm -rf /etc/foo/*" > /bin/foodel; sudo chmod 755 /bin/foodel 

тогда Добавляют это, чтобы <ударить>, что/etc/inittab видят здесь: , где inittab файл? :

foo:2345:boot:/bin/foodel

, Который создаст/etc/foo на начальной загрузке, если это не будет существовать, и затем освобождать его.

Это сделает то же на входе в систему удара:

echo "/bin/foodel" >> ~/.bashrc
0
ответ дан 13 April 2017 в 15:24

Другие вопросы по тегам:

Похожие вопросы: