Enlace simbólico en crontab, script no encontrado

Enlace simbólico en crontab, script no encontrado

Estoy ejecutando pruebas de Debian y no puedo obtener un cron simple para ejecutar un script PHP con enlace simbólico.

Tengo un script php en un subdirectorio de mi carpeta de inicio /home/foobar/dir/script.php(que comienza con el siguiente shebang #!/usr/bin/env php).

He creado un enlace simbólico que apunta a él:

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*

Y agregué la siguiente regla a mi crontab (ejecutar whatevercada minuto):

crontab -e
* * * * * whatever

Perono funciona, Obtuve el siguiente error:

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

Mientrasapuntar al script sin usar el enlace simbólico funciona:

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

¿Alguna idea?

Respuesta1

Los directorios como /usr/local/biny /usr/local/sbinno están por defecto en los cronjobs $PATH. Pero puedes redefinir $PATHen crontab, simplemente coloca algo como esto antes de cualquier cronjob definido.

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

Respuesta2

La variable de entorno $PATH en cron es limitada y no incluirá ni /usr/local/bin ni /home/foobar/dir. La respuesta correcta es, como descubrió, calificar completamente la ruta al script en su crontab; conduce a menos sorpresas.

información relacionada