Saltar al contenido

El script no se ejecuta a través de crontab pero funciona bien de forma independiente

Solución:

Una cosa a la vez:

Primero, démosle una carpeta bin basada en el usuario:

cd ~/ && mkdir bin

Quieres usar crontab. Comencemos con algo realmente simple:

* * * * * touch /tmp/testing.txt

Está bien, eso funciona

Ahora intentemos ejecutar un script que haga lo mismo

* * * * * /home/username/bin/touchtest.sh

para correr una vez por minuto hasta que funcione
No, no necesitas un ./ en el medio de la línea. ./ es para cuando está dando URL relativas.
Está bien, eso funciona

Ahora intentemos ejecutar un script que llame a xmessage

* * * * * /home/username/bin/rebootwarn.sh

no funciona

Primero, necesitamos no depender de las variables del entorno. Esto incluye la configuración de la ruta, la configuración x11 o cualquier otra cosa (me vienen a la mente las variables de entorno python y ruby ​​…)

Hagamos que el nuestro se parezca un poco al archivo cron adecuado de anacron. Lo guardé como prueba

#Borrowed from anacron
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
#End borrowed from anacron

* * * * *   /bin/bash /home/username/bin/test.sh

Configurar para que se ejecute una vez por minuto

crontab test para importarlo

En el guión

#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
export DISPLAY=:0.0
up=$(uptime | grep "day" > /home/dnaneet/uptime.foo && awk < /home/dnaneet/uptime.foo '{ print $3 }')

[[ $up -gt 0 ]] && xmessage -center "Restart!"`

Bien, eso funciona … ¿qué hicimos?
Cambiamos todos los comandos para que no dependan de rutas que no establecimos explícitamente
Ejecutamos nuestro script explícitamente con bash
Le dijimos al script que esperamos estar en DISPLAY: 0.0

El problema se solucionó lea el manual en Google:

descripción:

  1. Tengo un script usando #!/bin/bash como encabezado
  2. Puse el guion en /home/wc3/palert/

análisis:

  1. crontab no puede ejecutar mi script
  2. Pero si ejecuto manualmente, muestra la salida y también puedo ver el resultado en mi web
  3. Significa que crontab no puede obtener el entorno que no es como cuando ejecuta su secuencia de comandos en su carpeta de secuencias de comandos

respuesta:

  1. ponga su entorno usando esta línea a continuación en su script con:

    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/wc3/palert
    

    cambia esto: /home/wc3/palert

    con: el lugar en el que pones tu guión, p. ej. /home/budi/script.sh

muestra:

#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/budi
# Script continues...

Intente poner su secuencia de comandos en crontab.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

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