En Linux (uso Ubuntu), ejecuto un programa (ruby) que se ejecuta continuamente durante todo el día. Mi trabajo es monitorear para ver si el programa falla y, de ser así, reiniciar el programa. Esto consiste simplemente en presionar 'Arriba' para el último comando y 'Entrar'. Suficientemente simple.
Tiene que haber una manera de escribir un script bash para monitorear mi programa si deja de funcionar y reiniciarlo automáticamente.
¿Cómo haría para hacer esto?
Una ventaja es poder guardar la salida del programa cuando falla.
Lo que podrías hacer:
#!/bin/bash LOGFILE="some_file.log" LAUNCH="your_program" while : do echo "New launch at `date`" >> "${LOGFILE}" ${LAUNCH} >> "${LOGFILE}" 2>&1 & wait doneOtra forma es comprobar periódicamente el PID:
#!/bin/bash LOGFILE="some_file.log" LAUNCH="your_program" PID="" CHECK="" while : do if [ -n "${PID}" ]; then CHECK=`ps -o pid:1= -p "${PID}"` fi # If PID does not exist anymore, launch again if [ -z "${CHECK}" ]; then echo "New launch at `date`" >> "${LOGFILE}" # Launch command and keep track of the PID ${LAUNCH} >> "${LOGFILE}" 2>&1 & PID=$! fi sleep 2 doneBucle infinito:
while true; do your_program >> /path/to/error.log 2>&1 done