Pergunta

Eu quero encontrar se determinados arquivos são alterados nos últimos três minutos, a fim de decidir se o cp foi bem sucedida, e se eu deveria exit ou continuar o roteiro. Como posso fazer isso?

Graças

Foi útil?

Solução

Você pode obter a última modificação de um arquivo com stat, e a data atual com date. Você pode usar seqüências de formato tanto para obtê-los em "segundos desde a época":

current=`date +%s`
last_modified=`stat -c "%Y" $file`

Então, é muito fácil de colocar isso em uma condição. Por exemplo:

if [ $(($current-$last_modified)) -gt 180 ]; then 
     echo "old"; 
else 
     echo "new"; 
fi

Outras dicas

A sintaxe deste comando if depende do seu shell particular, mas os comandos de data não. Eu uso o bash; modificar, se necessário.

if [ $(( $(date +%s) - $(date +%s -r <file>) )) -le 180 ]; then
    # was modified in last three minutes
else
    # was not modified in last three minutes
fi

O +%s diz data para a saída de um tempo UNIX (o bit importante é que é um número inteiro em segundos). Você também pode usar estatísticas para obter essa informação - o stat -c %Y <file> comando é equivalente. Certifique-se de uso %Y não %y, para que você obtenha um tempo utilizável em segundos.

O comando status lhe dará a hora da última modificação

stat -c %y <filename>

Encontre saída pode o nome do arquivo se ele foi modificado nos últimos 3 minutos.

find file1 -maxdepth 0 -mmin -3

A alteração de arquivo timestamp realmente não implica que você copiado com êxito.
Se você pousar corrompendo o arquivo ou o sistema de arquivos é executado fora do espaço,
você provavelmente ainda ver uma mudança timestamp (precisa confirmar isso).

Eu não obter o contexto exato de sua exigência.
Se você disparar um cp, completa e retorna - não retorna enquanto ele está trabalhando
. Então, não é o retorno (com código de sucesso de saída) um bom indicador do sucesso?

Como e por que você iria sair parcialmente numa operação cp
Ou, é que um script cp lote que varre uma lista de arquivos ...
alguma elaboração ajudaria.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top