Salvando resultado entre execuções de script

1

Eu tenho um script em /opt , que é chamado regularmente pelo Cron. O script precisa gravar e ler um sinalizador de status entre as execuções. Em qual diretório devo armazenar o sinalizador? Estou pensando que /tmp pode não ser uma boa escolha, pois não é garantido que o arquivo que contém o sinalizador seja preservado entre execuções de script.

    
por August Karlstrom 18.02.2015 / 17:51

1 resposta

1

Verifique o padrão de hierarquia do sistema de arquivos para ver quais locais padrão existem em um sistema Linux.

Se você precisa garantir que o arquivo é preservado entre as execuções, então, de fato, /tmp não é o lugar certo. /tmp é frequentemente apagado em uma reinicialização, e é comum ter um trabalho cron que tenha excluído arquivos antigos não abertos de /tmp .

/var/tmp normalmente não é excluído automaticamente. É explicitamente não deve ser apagado em uma reinicialização. Isso pode ser uma escolha aceitável; no entanto, observe que o administrador do sistema pode decidir limpar esse diretório manualmente, portanto, você deve usá-lo somente se tiver certeza de que o administrador do sistema saberá que o arquivo não deve ser excluído. Além disso, /var/tmp é publicamente gravável (como /tmp ), portanto, cuide das permissões. Em particular, tome cuidado para que, se o seu script ainda não tiver sido executado, outro usuário possa criar um arquivo pelo nome esperado e, em seguida, seu script funcionará com dados incorretos.

Seria melhor usar um local privado para o usuário que está executando o script. Se o script for executado pela conta de um usuário humano, armazene o arquivo em algum lugar no diretório pessoal do usuário (convencionalmente um arquivo de ponto ). Se o script for executado por uma conta do sistema, o arquivo deverá ser armazenado em algum lugar em /var , que é onde os arquivos modificáveis vivem além daqueles em /tmp . Especificamente, crie um diretório para seu script em /var/lib e conceda as devidas permissões. Uma variante é criar um diretório em /var/opt (a convenção para usar /var/opt/PACKAGENAME/ em vez de /var/lib/PACKAGENAME/ para dados de variáveis pertencentes a um pacote cujo código e dados estáticos estão em /var/opt/PACKAGENAME/ não é universalmente seguido).

    
por 19.02.2015 / 01:15