Ok, así que hice mi script, lo dejé caer y /etc/cron.hourly
luego chmod 777
el archivo pero no se ejecutará (automáticamente). Si lo ejecuto manualmente, funciona bien. ¿Necesito hacer algo más?
Ok, así que hice mi script, lo dejé caer y /etc/cron.hourly
luego chmod 777
el archivo pero no se ejecutará (automáticamente). Si lo ejecuto manualmente, funciona bien. ¿Necesito hacer algo más?
Respuestas:
¿Por qué no usar crontab (/ etc / crontab) y usar * / 1 en el campo de la hora? He usado esto para ejecutar un script cada 5 minutos y funciona bien:
# m h dom mon dow user command
* */1 * * * user command
cron.daily
y amigos funciona un poco mejor si la máquina no está funcionando todo el tiempo, porque anacron intenta aproximarse al horario correcto, mientras que cron simple simplemente no los ejecutará si la máquina no está encendida toda la noche. Para trabajos por hora, esto probablemente no importa tanto.
/etc/crontab
: cron.daily
, cron.weekly
y cron.monthly
ejecuta con anacron (si está disponible), pero por hora run-parts --report /etc/cron.hourly
.
Las entradas en cron.hourly
son ejecutadas por el mecanismo run-parts ( man run-parts
para más información). Y run-parts
es exigente con los nombres de archivo que considera válidos.
Por ejemplo, darle una extensión a su secuencia de comandos la invalidará y dará como resultado que el trabajo no se ejecute. [a-zA-Z0-9_-]
son los caracteres válidos, entonces el '.' lo invalida
Al agregar un trabajo a /etc/cron.hourly
(o .daily
, .weekly
, etc.), se recomienda probar más tarde que run-parts
en realidad va a ejecutarlo con el comando:
run-parts --test /etc/cron.hourly
Si al ejecutar este comando muestra su archivo, significa que funcionó. De lo contrario, si no muestra nada, su nombre de archivo no es válido.
¿Cómo se llamaba tu guión?
giving your script an extension will make it invalid and result in the job not being run
--report
para ejecutar realmente los scripts.
Su problema probablemente se deba a los permisos excesivamente abiertos, que permiten a cualquiera editar su archivo. Intenta en su 755
lugar.
Buscar en las entradas cron en su salida de syslog debería confirmar esto.
La respuesta de DaithiF debería ser la respuesta correcta.
Además, mi guión no tenía #!/bin/bash
en la primera línea. Aunque el script se pudo ejecutar con la línea de comando, lo run-parts
rechazó diciendo "Error de formato de ejecución ".
Cambiar el nombre de archivo de scriptname.sh
a scriptname
y añadiendo el #!/bin/bash
en primera línea habilitada mi script para ejecutar por hora.
Cuando corres
crontab -l
¿Esta tarea está en la lista?
si no, agréguelo
crontab -e
agrega esta línea
0 * * * * yourScript
si está en esta lista, intente agregar la ruta del lenguaje de programación a la parte superior de su script
Ejemplo:
bash: #!/bin/bash
Estas 2 cosas siempre resolvieron mis problemas :)