2009-12-10 08:38:25 +0000 2009-12-10 08:38:25 +0000
22
22

¿Cómo ejecutar un script de shell a través de crontab?

Tengo una secuencia de comandos notify.sh que parece:

notify-send "hi welcome"

Mi notificación crontab para las 2 PM:

0 14 * * * home/hacks/notify.sh

Sin embargo, esto no funciona. ¿Cuál es el problema?

Respuestas (6)

38
38
38
2009-12-10 09:04:32 +0000

A tu script le falta una línea #! al principio, que es la magia interpretada por el kernel para decir qué intérprete de comandos se debe usar para el script.

Haz que se vea así:

#!/bin/sh
notify-send "hi welcome"

y asegúrate de que el script es ejecutable:

ls -l home/hacks/notify.sh
chmod +x home/hacks/notify.sh
ls -l home/hacks/notify.sh

Además, ya que pides que esto ocurra sólo una vez al día, ¿la zona horaria del crontab es la misma que la tuya? Es posible que esto ocurra a las 2pm GMT.

18
18
18
2010-03-25 06:05:09 +0000

Hacer que crontab se ejecute es fácil sólo . Aquí voy a decir cómo ejecutar trabajos crontab. Es útil para cualquier persona que está atascado en crontab.

*/1 * * * * cd /home/hacks && sh notify.sh

Para hacer el script ejecutable, tenemos que hacer:

chmod +x home/hacks/notify.sh

Aquí ejecuto este script cada un minuto … Haciendo el siguiente script, puedes escribirlo en un archivo de registro para saber si está funcionando

write log

*/1 * * * * cd /home/hacks && sh notify.sh>>test.log

send mail

*/1 * * * * cd /home/hacks && sh notify.sh>>test.log | mail -s "Hi this is example" user@domain.com
5
5
5
2009-12-10 08:42:40 +0000

4 hipótesis:

  • el demonio cron no se está ejecutando (haga un ps axfww | grep cron y compruébelo)

  • el notify-send está intentando enviar la salida a un terminal, o a una sesión X – pero se ejecuta desde el entorno cron y no sabe “con quién hablar”, por así decirlo.

  • su script no es ejecutable

  • la ruta home/ en el script crontab es relativa al usuario con el que se ejecuta el script. Intente usar la ruta completa

1
1
1
2012-03-11 00:33:46 +0000

Añade export DISPLAY=:0 por encima de la línea notify-send en tu script. Esto aborda el segundo punto de lornezog.

0
0
0
2015-10-24 12:00:18 +0000

En primer lugar, debemos editar el crontab con el comando crontab -e y dentro de este Crontab añadir la ruta del script ejecutable y en su caso así * 14 * * * home/hacks/notify.sh >/dev/null 2>&1 .

Start /Stop / restart cron service

  • /etc/init.d/crond start /stop / restart
  • service crond start /stop /restart
  • systemctl stop crond.service systemctl stop crond.service
-2
-2
-2
2018-12-28 16:01:47 +0000

Bastante simple, añadir la siguiente línea en la parte inferior del archivo crontab a través de:sudo nano /etc/crontab

@reboot root cd /home/pi/node-sonos-http-api && npm start &