Você faria isso assim:
date -d "+1 days" +%a
Isso processa:
Sat
No CentOS 6 Linux eu uso date +%a
em vários cronjobs e scripts para gerar nomes de logfiles como myprog-Tue.txt
e isso funciona bem para mim desde muitos anos.
Mas agora, para um programa, preciso excluir os arquivos de log anteriores, ou seja, no meu cronjob antes de iniciar meu programa e redirecionar sua saída para myprog-Tue.txt
, gostaria de excluir o myprog-Wed.txt
.
Desta forma, gostaria de obter os arquivos de log antigos do meu caminho, mas ainda ter 5-6 dias de arquivos de log ao redor.
Então eu tentei:
# date -v+1d +%a
date: invalid option -- 'v'
Try 'date --help' for more information.
Alguém sabe o que há de errado aqui, por favor?
O problema não é como você pode usar date
para produzir o que você quer ... seu problema é:
This way I'd like to get the old logfiles out of my way, but still have 5-6 days of logfiles around.
Então, por que não usar find
para remover todos os arquivos, mas esta semana?
find /path/to/files/ -mtime +7 -exec rm {} \;
Além disso, date
tem muitas implementações diferentes - Lembro-me da última vez que usei, foi meio difícil encontrar o flags
certo para fazer o que eu queria ... e não foi fácil fazer isso funcionam da mesma maneira entre uma máquina Linux e uma máquina AIX ... então, caso este comentário ajude você a decidir contra date
:)
Use a opção -d
para especificar uma frase:
date -d '+ 1 day' +%a
Outra entrada para "como gerenciar seus arquivos de log" ....
Você pode ver logrotate , que deve fazer parte da maioria das distribuições Linux. Pode gerenciar exclusão e compactação. Muitos daemons do Linux usam isso, então você pode ver alguns exemplos de arquivos de configuração.
Um pouco mais simples é o rotatelogs que lida com a parte de rotação, mas não faz nada exclusão (seu find ... -delete
faria isso.