Execute-o em uma sessão screen
. Dessa forma, quando a massa se desconecta, a tarefa ainda está sendo executada no servidor. Basta reconectar e usar screen -r
para anexar novamente a sessão de tela para ver o progresso.
Eu tenho uma pasta que contém muitos arquivos. Eu quero excluir arquivos com mais de 30 dias, então eu uso o comando:
find cache/ -mtime +30 -exec rm {} \;
Mas minha sessão SSH é desconectada antes que o comando seja concluído.
Como posso limitar o número de arquivos que são excluídos de uma só vez? Por exemplo:
find cache/ -mtime +30 -LIMIT 10000 -exec rm {} \;
Execute-o em uma sessão screen
. Dessa forma, quando a massa se desconecta, a tarefa ainda está sendo executada no servidor. Basta reconectar e usar screen -r
para anexar novamente a sessão de tela para ver o progresso.
Você também pode executar o comando com nohup
, assim:
nohup find cache/ -mtime +30 -exec rm {} \; &
Então, cat nohup.out
para ficar de olho na saída.
Você pode fazer algo como:
find cache/ -mtime +30 | head -n 10000 | xargs rm
Isso funcionaria se os nomes de arquivos fossem bastante "baunilha" (sem espaços, caracteres especiais, etc.) e curtos.
Mas se você preferir apenas aguardar que seu comando original seja concluído, basta dizer ao PuTTY para enviar mensagens de keepalive do SSH de vez em quando; veja os documentos do PuTTY para mais detalhes. Eu costumo usar um valor entre 45-60 segundos, eu mesmo.
find cache/ -mtime +30 -print0 | xargs -0 rm -v
Em seguida, ele exibirá todos os arquivos excluídos, o que impedirá o tempo limite da sua sessão.
Ou, coloque isso no cron, pois é algo que parece ser automatizado.