Этот вопрос касается 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
. Как мне это сделать?
/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
.
Не строго ответ на Ваш вопрос, но Вы могли бы найти /var/tmp
быть более подходящим местоположением, поскольку это не становится очищенным по перезагрузке. Это разработано для временных файлов, которые не должны быть автоматически отброшены после короткого времени.
то, Что я часто делаю, однако, создают меня, папка под / решила сохранить случайные вещи, которые я не хочу в доме. Это - подходящее место для помещения вещей, которые являются вне управления основной ОС.
Как так:
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 файлы, который не очищен.
Это - плохая идея иметь файлы с будущим значением, записать в/tmp каталог (/var/tmp, как предложили другие, лучшее место). Однако Вы могли бы хотеть дать выстрел в болтовню. Это должно быть выполнено после выходов приложения, но перед завершением работы. Помните, что эта операция не позволит ничто запись к тому каталогу впредь.
сенсорный/tmp/foo/ddmmyy/.001_immute_me chattr +i/tmp/foo/ddmmyy/.001_immute_me
Выполнение это:
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