Link simbólico no crontab, script não encontrado

Link simbólico no crontab, script não encontrado

Estou executando testes do Debian e não consigo fazer com que um cron simples execute um script PHP com link simbólico.

Eu tenho um script php em um subdiretório na minha pasta pessoal /home/foobar/dir/script.php(que começa com o seguinte shebang #!/usr/bin/env php).

Eu criei um link simbólico que aponta para ele:

sudo ln -s ~/dir/script.php /usr/local/bin/whatever
ls -la /usr/local/bin
lrwxrwxrwx 1 root staff 24 Feb 27 17:46 whatever -> /home/foobar/dir/script.php*

E adicionei a seguinte regra ao meu crontab (executar whatevera cada minuto):

crontab -e
* * * * * whatever

Masnão funciona, Estou tendo o erro a seguir:

cat /var/mail/foobar
...
/bin/sh: 1: whatever: not found

Enquantoapontar para o script sem usar o link simbólico funciona:

crontab -e
* * * * * /home/foobar/dir/script.php

Qualquer ideia?

Responder1

Diretórios como /usr/local/bine /usr/local/sbinnão são por padrão em cronjobs $PATH. Mas você pode redefinir $PATHno crontab, basta colocar algo assim antes de qualquer cronjob definido

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Responder2

A variável de ambiente $PATH no cron é limitada e não incluirá nem /usr/local/bin nem /home/foobar/dir. A resposta correta é, como você descobriu, qualificar totalmente o caminho para o script no seu crontab; isso leva a menos surpresas.

informação relacionada