Posso impedir que o / tmp seja excluído se o computador travar?

5

Frequentemente coloco arquivos temporários em que estou trabalhando em / tmp, por isso não preciso excluí-los depois que termino. No entanto, se o computador travar, estou sem sorte, porque o diretório será apagado.

Existe uma maneira de impedir que o / tmp seja limpo se o computador estiver reiniciando de uma falha? Caso contrário, existe outra solução, como criar outro diretório temporário em outro lugar e excluí-lo automaticamente na reinicialização se não houver falha.

    
por Sparhawk 29.12.2012 / 06:46

2 respostas

9

/tmp é limpo na inicialização pelo script Upstart /etc/init/mounted-tmp.conf . Se você olhar para esse arquivo, verá que não há maneiras de dizer para ele não fazer o trabalho dele. No entanto, você está livre para modificá-lo.

Veja como eu devo proceder:

  1. No final de mounted-tmp.conf (logo antes de end script ), coloque o seguinte:

     touch /tmp/.notclean
    

    Dessa forma, sempre que o / tmp é montado, um arquivo .notclean será criado.

  2. Após a seguinte linha (que é a linha antes que o script comece a remover arquivos) ...

     cd "${MOUNTPOINT}" || exit 1
    

    ... verifique a existência de .notclean . Se o arquivo existir, significa que o computador não foi desligado corretamente.

     cd "${MOUNTPOINT}" || exit 1
     [ -f .notclean ] && exit 0
    
  3. Agora você precisa de um novo script Upstart que remova .notclean no desligamento. Crie /etc/init/mark-tmp-clean.conf e coloque este código:

     description "some useful description"
     start on starting rc
     task
     script
         rm -f /tmp/.notclean
     end script
    
por Andrea Corbellini 29.12.2012 / 10:17
2

Isso realmente é apenas um codicilo para o post de Andrea e meu comentário. Aqui está o fragmento de código que adicionei após a linha TMPTIME=0 em /etc/default/rcS . Nenhuma outra alteração é necessária.

# 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
    
por TerryE 27.10.2013 / 12:10

Tags