Cron.hora no correrá

55

Ok, así que hice mi script, lo dejé caer y /etc/cron.hourlyluego chmod 777el archivo pero no se ejecutará (automáticamente). Si lo ejecuto manualmente, funciona bien. ¿Necesito hacer algo más?

Switchkick
fuente
Esta respuesta no debería haber recibido tantos votos positivos sin el nombre del archivo y el contenido.
usuario desconocido

Respuestas:

13

¿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
oli206
fuente
66
Usar cron.dailyy 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.
Poolie
99
Realmente aprecio la siguiente respuesta, ya que aborda el problema con cron.hourly, en lugar de encontrar una solución.
tishma
44
Esta no es una respuesta a la pregunta
josh123a123
@poolie Como se puede ver en/etc/crontab : cron.daily, cron.weeklyy cron.monthly ejecuta con anacron (si está disponible), pero por hora run-parts --report /etc/cron.hourly.
Pablo A
144

Las entradas en cron.hourlyson ejecutadas por el mecanismo run-parts ( man run-partspara más información). Y run-partses 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-partsen 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?

DaithiF
fuente
Hay dos: cerebro_random_response.sh y Cerebro Temperature.sh, ¿no es bueno?
Switchkick
21
correcto, no es bueno :) [a-zA-Z0-9_-] son ​​los caracteres válidos, entonces el '.' lo invalida Esto es lo que quise decir anteriormente al 'darle una extensión a su script lo invalidará'
DaithiF
11
oMG, esto acaba de salvar un gran dolor de cabeza. ¡GRACIAS! giving your script an extension will make it invalid and result in the job not being run
Jonathan S. Fisher
También puede usar --reportpara ejecutar realmente los scripts.
Pablo A
5

Su problema probablemente se deba a los permisos excesivamente abiertos, que permiten a cualquiera editar su archivo. Intenta en su 755lugar.

Buscar en las entradas cron en su salida de syslog debería confirmar esto.

Llora Havok
fuente
4

La respuesta de DaithiF debería ser la respuesta correcta.

Además, mi guión no tenía #!/bin/bashen la primera línea. Aunque el script se pudo ejecutar con la línea de comando, lo run-partsrechazó diciendo "Error de formato de ejecución ".

Cambiar el nombre de archivo de scriptname.sha scriptnamey añadiendo el #!/bin/bashen primera línea habilitada mi script para ejecutar por hora.

Ben Lin
fuente
-1

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 :)

Wolfy
fuente
Hecho todo y el guión es bueno, funciona a las mil maravillas. También está en la lista crontab, pero no se ejecuta ninguna tarea por hora. Gracias de todos modos :(
Switchkick