command no crontab não está funcionando

0

O comando no crontab não está funcionando, mas se eu executar o mesmo comando no terminal, ele funciona.

[root@ds backup]# crontab -l
* * * * * find /opt/backup -type f -regextype posix-extended -not -regex '.*('$(sed 's/ /|/g' <<<$(echo {6..0} | xargs -I{} -d ' ' date --date={}' days ago' +"%Y%m%d" | xargs echo))').*' &> /home/ocdn_adm/f.txt

#
#

Após 2 minutos, executo estes comandos,

[root@ds backup]# cat /home/ocdn_adm/f.txt
cat: /home/ocdn_adm/f.txt: No such file or directory

Parece que o comando cron não funciona

Mas se eu executar o mesmo comando no terminal

[root@ds backup]# find /opt/backup -type f -regextype posix-extended -not -regex '.*('$(sed 's/ /|/g' <<<$(echo {6..0} | xargs -I{} -d ' ' date --date={}' days ago' +"%Y%m%d" | xargs echo))').*' &> /home/ocdn_adm/f.txt
[root@ds backup]# cat /home/ocdn_adm/f.txt
/opt/backup/conf-backup-20180407.tar.gz

funciona, esquisito. Posso fazer o comando para trabalhar no crontab?

    
por Avinash Raj 11.05.2018 / 13:45

1 resposta

1

Cuidado, cron não usa bash por padrão. Você precisa especificar o shell usado, bem como PATH . Por exemplo:

SHELL=/bin/bash
PATH=~/bin:~/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/bin

* * * * * find /opt/backup -type f -regextype posix-extended -not -regex '.*('$(sed 's/ /|/g' <<<$(echo {6..0} | xargs -I{} -d ' ' date --date={}' days ago' +"\%Y\%m\%d" | xargs echo))').*' &> /home/ocdn_adm/f.txt

Enquanto estamos nisso, também gosto de adicionar informações sobre a exibição, para que os comandos dependentes do X estejam funcionando:

DISPLAY=:0

Para depurar seus comandos do cron, você pode dar uma olhada no syslog, informações sobre eles em execução e possíveis erros:

tail -f /var/log/syslog

Exemplo de saída de um comando correto xset m 1 1 :

May 11 14:29:01 cage CRON[25152]: (Ctrl-C) CMD (xset m 1 1)
    
por 11.05.2018 / 14:27