Como apagar automaticamente um arquivo em uma hora específica depois de fechá-lo?

3

Estou usando o Ubuntu 12.04 e estou aqui para saber: existe alguma maneira de limitar o tempo de vida de um arquivo?

Quero dizer, por exemplo, criei um arquivo que precisa ser excluído automaticamente 10 minutos depois de fechá-lo. Existe alguma maneira de fazer isso?

    
por rɑːdʒɑ 07.09.2012 / 17:03

2 respostas

3

Isso pode ser feito facilmente usando inotifywait de inotify-tools package (não é instalado por padrão):

inotifywait -e close /path/to/file && sleep 600 && rm /path/to/file

Isso configurará uma observação em /path/to/file e aguardará o fechamento. Então, após 10 minutos (600 segundos), o arquivo será removido.

Aqui está um script para facilitar as coisas:

selfdestroy.sh :

#!/bin/bash
if [ $# != 2 ]; then
        echo "$0 <file> <time>"
        exit 1
fi

if [ ! -f $1 ]; then
        echo "File $1 not found."
        exit 1
fi

if (( $2 < 1 )); then
        echo "Time must be > 0."
fi

(inotifywait -e close $1
sleep $2
rm $1) 2>1 >/dev/null &

Chame o script assim: selfdestroy.sh /path/to/file 600 .

    
por Eric Carvalho 07.09.2012 / 19:29
4

Você precisa escrever um script para realizar isso.

Usando os comandos

  • acessar (leia o conteúdo do arquivo) - atime
  • alterar o status (modificar o arquivo ou seus atributos) - ctime
  • modificar (alterar o conteúdo do arquivo) - mtime

  • cron

  • find

Exemplo de script para remover o arquivo '.bak'

 #!/bin/bash
  find <location> -mtime <value> -type f -name "*.bak" -exec rm -f {} \;

Altere a permissão do script (executar)

adicione o script a cron e execute-o quando necessário.

    
por devav2 07.09.2012 / 17:29

Tags