Я часто прикрепляю временные файлы, над которыми работаю, в / tmp, поэтому мне не нужно удалять их, когда я закончу. Однако, если компьютер выйдет из строя, мне не повезет, потому что этот каталог будет стерт.
Есть ли способ предотвратить стирание / tmp, если компьютер перезагружается после сбоя? Если нет, есть ли другое решение, такое как создание другого временного каталога в другом месте и его автоматическое удаление при перезапуске, если не происходит сбой.
Это действительно просто приложение к сообщению Андреа и моему комментарию. Вот фрагмент кода, который я добавил после строки TMPTIME=0
в /etc/default/rcS
. Никаких других изменений не требуется.
# scan the boot cmdline for tmptime parameter and overide TMPTIME if it is set
for opt in $(cat /proc/cmdline); do
case $opt in
tmptime=*)
TMPTIME="${opt#tmptime=}"
;;
esac
done
/tmp
очищается при загрузке скриптом Upstart /etc/init/mounted-tmp.conf
. Если вы посмотрите на этот файл, вы увидите, что нет никаких способов сказать ему, чтобы он не выполнял свою работу. Однако вы можете изменить его.
Вот как я буду действовать:
В самом конце mount-tmp.conf (как раз перед end script
) разместите следующее:
touch /tmp/.notclean
Таким образом, каждый раз, когда / tmp монтируется, будет создан файл .notclean
.
После следующей строки (то есть строки перед тем, как скрипт начинает удалять файлы) ...
cd "${MOUNTPOINT}" || exit 1
... проверить существование .notclean
. Если файл существует, это означает, что компьютер не выключился должным образом.
cd "${MOUNTPOINT}" || exit 1
[ -f .notclean ] && exit 0
Теперь вам нужен новый скрипт Upstart, который удаляет .notclean
при завершении работы. Создайте /etc/init/mark-tmp-clean.conf
и разместите этот код:
description "some useful description"
start on starting rc
task
script
rm -f /tmp/.notclean
end script