Como reiniciar automaticamente um programa screen -x?

0

Ubuntu 16.04 O programa em execução na tela geralmente falha e muitas vezes tenho que reinicializar manualmente. Por favor me guie como configurar o reinício automático 3 vezes ao dia. (Quero dizer crontab para desligá-lo e executá-lo novamente)

Obrigado

    
por Phát Hoàng 23.08.2017 / 21:20

2 respostas

1

A solução da HostFission é boa, mas se você não quiser verificar se o programa está rodando, você pode matá-lo e iniciá-lo assim:

Crie um arquivo bash com qualquer nome nele (como: restart.sh) e digite:

#/bin/bash

/usr/bin/screen -S -X NameOfTheScreen quit;

/usr/bin/screen -S NameOfTheScreen /path/to/startscript;

Então você pode configurar o crontab para executar este arquivo quantas vezes quiser durante o dia.

crontab -e

* 3,6,9,12,15,18,21,0 * * * /path/to/restart.sh >> /path/to/logfile

    
por 25.08.2017 / 04:51
0

Você precisa armazenar o PID do processo em execução em algum lugar quando ele for iniciado e, posteriormente, se ele ainda estiver em execução, enviar um SIGTERM para o processo e aguardar o término. O script abaixo executará essas ações.

PROGRAM=/bin/someProgram
PIDFILE=/var/run/someProgram.pid

if [ -f $PIDFILE ]; then
  PID = $(cat $PIDFILE)
  if [ -d /proc/$PID ] && [ "$(readlink -f /proc/$PID/exe)" == "$PROGRAM" ]; then
    echo -n "Shutting down..."
    kill $PID
    wait $PID
    echo "done."
  else
    echo "PID not found, program already terminated."
  fi
  rm $PIDFILE
fi

echo -n "Starting..."
$PROGRAM &
echo $! > $PIDFILE
echo "done."

Então, basta agendar isso no cron para rodar a cada X horas.

    
por 24.08.2017 / 07:15