O problema é que crontab
não tem $PATH
definido quando é executado. Você pode realmente fornecer um caminho adicionando isso ao topo do arquivo aberto via crontab -e
:
PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
(ou qualquer que seja o PATH
que você preferir usar). Isso significa que você pode evitar especificar os caminhos completos para os comandos, diretamente do cron.
Existem vários problemas com o seu comando original. Você está basicamente pedindo ao shell para fazer a expansão de curinga, em vez de find
. Em segundo lugar, você não está fornecendo um caminho completo para rm
; use /bin/rm
ou /usr/bin/rm
, onde quer que esteja localizado em seu sistema (veja which rm
).
O primeiro argumento para encontrar é o "local a ser pesquisado" e, em seguida, você especifica a "consulta de pesquisa" com os vários -<option>
s. Portanto, o formato adequado do comando que você deseja executar é:
find "/home/bkp/dbdump" -name "*.gz" -mtime +5 -exec rm -f {} \;
ou
find "/home/bkp/dbdump" -name "*.gz" -mtime +5 delete
Se você não especificar a definição PATH
como acima, use:
/usr/bin/find "/home/bkp/dbdump" -name "*.gz" -mtime +5 -exec /bin/rm -f {} \;
ou
/usr/bin/find "/home/bkp/dbdump" -name "*.gz" -mtime +5 delete