2010-07-26 25 views
6

Deseo crear un trabajo cron que ejecute un script cada 5 segundos. Al ver que los trabajos cron solo permiten incrementos de minutos 0-59 y así sucesivamente.Trabajos cron: para ejecutar cada 5 segundos

Pensé crear otra secuencia de comandos que llama a mi script original escrito a continuación.

#!/bin/bash 

while true 
do 
# script in the same directory as this script. is this correct? 
bash makemehappy.sh 
sleep 1 
done 

Ahora, tienen que saber cómo ejecutar este script cada vez que arranco mi equipo y para que comience a sí misma si no se está ejecutando por alguna razón.

También soy consciente de que ejecutar este script cada minuto no sería una buena idea. :)

si hay una forma más fácil de ejecutar un script cada 5 segundos, por favor avise.

Por favor y gracias.

+8

Intentar hacer algo cada 5 segundos ¿es realmente la mejor solución a su problema? – user347594

Respuesta

7

No utilizaría cron para esto. Yo usaría esa secuencia de comandos bash (use una ruta absoluta, a menos que desee que sea portátil y sepa que se conservará la estructura del directorio).

En su lugar, simplemente sleep 5, como lo hizo usted (solo 5 segundos en lugar de 1).

En cuanto a comenzar con su sistema, eso depende del sistema. En (algunas) distribuciones de Linux, hay un archivo llamado /etc/rc.local en el que puede agregar scripts para ejecutar cuando se inicia el sistema. Bueno ... No debería ser tan general, las distros que he usado tienen esto. Si está ejecutando Ubuntu, ya no hay un inittab, usan upstart, por cierto.

Por lo tanto, si tiene un bucle infinito y una entrada en /etc/rc.local, entonces debe dorar para que funcione sin fin (o hasta que encuentre un problema y salga).

+0

Mi distro es ubuntu? Parece que no puedo encontrar ese archivo rc.local en el directorio etc. sugerencias? – myusuf3

+0

¿qué versión? (cat/etc/issue) – Tim

+0

10.04 Me las arreglé para resolverlo. :) agregándolo a init.d y actualizando la actualización-rc.d – myusuf3

2

Intente utilizar anacron o, mejor aún, una secuencia de comandos de inicio para iniciar cuando se inicia la computadora.

Si desea que el script se "reinicie solo", necesitará ejecutar algo cada pocos minutos para verificar que el original aún se está ejecutando. Esto se puede hacer en inittab (/etc/inittab) o, en Ubuntu, /etc/event.d. Pruebe man 5 inittab, mirando la opción 'respawn'.

1

Algunos cron s tienen un especificador de tiempo @reboot (esto cubre todos los campos de fecha y hora). Si el tuyo lo hace, puedes usar eso. Si se trata de un servicio de "sistema" (en lugar de algo que se ejecuta por sí mismo), las otras soluciones aquí probablemente sean mejores.

1

Los scripts Init funcionan bien durante el inicio, pero no detectan si un proceso falla y debe reiniciarse. supervisord hace un gran trabajo al detectar procesos fallidos y reiniciarlos. Yo recomendaría una secuencia de comandos con un ciclo de 5 segundos como @Tim descrito, pero envuelva supervisord para asegurarse de que siga funcionando.

Cuestiones relacionadas