Solución:
Las principales diferencias entre ejecutar un comando desde cron y ejecutarlo en la línea de comandos son:
- cron probablemente esté usando un shell diferente (generalmente
/bin/sh
); - cron definitivamente se está ejecutando en un entorno pequeño (cuál depende de la implementación de cron, así que verifique el
cron(8)
ocrontab(5)
página de manual; generalmente solo hayHOME
, quizásSHELL
, quizásLOGNAME
, quizásUSER
y un pequeñoPATH
); - cron trata el
%
carácter especialmente (se convierte en una nueva línea); -
Los trabajos cron se ejecutan sin una terminal o un entorno gráfico.
La siguiente invocación ejecutará el fragmento de shell prácticamente como si fuera invocado desde cron. Supongo que el fragmento no contiene los caracteres. '
o %
.
env - HOME="$HOME" USER="$USER" PATH=/usr/bin:/bin /bin/sh -c 'shell snippet' </dev/null >job.log 2>&1
Consulte también la ejecución de un script sh desde el cron, que podría ayudar a resolver su problema.
Desde el enlace de @ sr_ (¿Cómo obtener un entorno limpio en un shell ksh?), Busqué env y es posible que desee probar esto:
env -i ./my-script.sh
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)