Usando “crontab -e” [duplicado]

1
    

Esta pergunta já tem uma resposta aqui:

    

Estou tentando aprender um pouco sobre cron .

Eu editei crontab -e para ter esta linha:

 */10 * * * * /usr/bin/touch /home/dkb/Desktop/test.txt

Funciona e vejo test.txt alterando seu valor "Data de modificação" a cada dez minutos no Thunar e há entradas correspondentes em /var/log/syslog :

Mar 13 10:50:01 dkb-lappy CRON[3978]: (dkb) CMD (/usr/bin/touch /home/dkb/Desktop/test.txt)
Mar 13 11:00:01 dkb-lappy CRON[4066]: (dkb) CMD (/usr/bin/touch /home/dkb/Desktop/test.txt)
Mar 13 11:10:01 dkb-lappy CRON[4099]: (dkb) CMD (/usr/bin/touch /home/dkb/Desktop/test.txt)

Mas, se eu usar

*/10 * * * * /usr/bin/touch /home/dkb/Desktop/$(date +%H:%M:%S).txt  

nenhum arquivo é criado em ~ / Desktop e syslog tem isso:

Mar 13 11:30:01 dkb-lappy CRON[4241]: (dkb) CMD (/usr/bin/touch /home/dkb/Desktop/$(date +)
Mar 13 11:30:01 dkb-lappy CRON[4240]: (CRON) info (No MTA installed, discarding output)
Mar 13 11:40:01 dkb-lappy CRON[4251]: (dkb) CMD (/usr/bin/touch /home/dkb/Desktop/$(date +)
Mar 13 11:40:01 dkb-lappy CRON[4250]: (CRON) info (No MTA installed, discarding output)

Eu verifiquei que /usr/bin/touch /home/dkb/Desktop/$(date +%H:%M:%S).txt funciona corretamente no terminal.

Então, o que estou fazendo de errado?

    
por DK Bose 13.03.2014 / 07:17

1 resposta

3

crontab trata % especialmente. Você precisa escapar com uma barra invertida.

De man 5 crontab :

Percent-signs (%) in the command, unless escaped with backslash (\), will be changed into newline characters, and all data after the first % will be sent to the command as standard input.

Assim, para que date funcione corretamente:

*/10 * * * * /usr/bin/touch /home/dkb/Desktop/$(date +\%H:\%M:\%S).txt  
    
por 13.03.2014 / 07:22

Tags