Saltar al contenido

¿Ejecutar script en un shell no interactivo?

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) o crontab(5) página de manual; generalmente solo hay HOME, quizás SHELL, quizás LOGNAME, quizás USERy un pequeño PATH);
  • 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)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *