Script init.d assíncrono

0

Eu estou querendo saber se é possível que um script de inicialização seja executado continuamente no Ubuntu. O que eu tenho em mente é algo como um script de servidor do Minecraft que está constantemente em execução para que, se o servidor travar por algum motivo, eu possa executar o comando novamente e reiniciá-lo. Então, basicamente, eu teria o comando para executar o meu servidor de minecraft em um loop while.

    
por Mojo982 25.03.2017 / 03:48

2 respostas

0

Acabei encontrando este que respondeu à minha pergunta.

    
por Mojo982 26.03.2017 / 01:50
1

Existem algumas maneiras de fazer isso. Esta resposta é uma que eu pessoalmente prefiro. É uma resposta rápida e suja. Mas de sua pergunta, eu entendo que é tudo que você está procurando.

1 Crie o script que faz a coisa que você quer em um loop. Por exemplo:

while [ 1 ]; do
    echo 'date' >> /some/file/somewhere
    sleep 1
done

2 Crie um segundo script para verificar se o primeiro script está sendo executado. Caso contrário, execute-o:

VAR='ps -ef |grep "name_of_script_1" |wc -l'
#VAR returns 1 if not running (because grep returns itself), 
#    2 if it is running.  
if [ "${VAR}" -eq "1" ]; then
    /run/script/1 &
fi

3 Execute o segundo script no cron em algum intervalo, como a cada 5 minutos.

*/5 * * * * root /run/script/2

Assim, a cada 5 minutos, o script2 verifica se o script 1 está sendo executado. Se não estiver sendo executado, ele é iniciado e lançado em segundo plano.

Existem muitos artigos na internet para ajudar com elementos específicos (executando algo no cron, enquanto / se for sintaxe, colocando o programa em segundo plano, etc. Mas isso deve aproximar você do que você está procurando.

    
por James 25.03.2017 / 04:23