Могу ли я предотвратить удаление / tmp в случае сбоя компьютера?

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

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

5
задан 29 December 2012 в 13:35

2 ответа

Это действительно просто приложение к сообщению Андреа и моему комментарию. Вот фрагмент кода, который я добавил после строки 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
0
ответ дан 29 December 2012 в 13:35

/tmp очищается при загрузке скриптом Upstart /etc/init/mounted-tmp.conf. Если вы посмотрите на этот файл, вы увидите, что нет никаких способов сказать ему, чтобы он не выполнял свою работу. Однако вы можете изменить его.

Вот как я буду действовать:

  1. В самом конце mount-tmp.conf (как раз перед end script) разместите следующее:

     touch /tmp/.notclean
    

    Таким образом, каждый раз, когда / tmp монтируется, будет создан файл .notclean.

  2. После следующей строки (то есть строки перед тем, как скрипт начинает удалять файлы) ...

     cd "${MOUNTPOINT}" || exit 1
    

    ... проверить существование .notclean. Если файл существует, это означает, что компьютер не выключился должным образом.

     cd "${MOUNTPOINT}" || exit 1
     [ -f .notclean ] && exit 0
    
  3. Теперь вам нужен новый скрипт Upstart, который удаляет .notclean при завершении работы. Создайте /etc/init/mark-tmp-clean.conf и разместите этот код:

     description "some useful description"
     start on starting rc
     task
     script
         rm -f /tmp/.notclean
     end script
    
0
ответ дан 29 December 2012 в 13:35

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

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