Reinicia um script se ele parar sem usar o crontab

0

Eu estou usando o Ubuntu 14.04. Eu tenho um script que deve ser executado em todos os momentos. A maneira mais fácil seria usar o crontab para executar outro script que verifica se o script1 está sendo executado e se não é reiniciado.

Eu gostaria de evitar o crontab e, se possível, qualquer comando su (eu gostaria de rodar isso sem nenhuma configuração adicional como root). Também como root eu tenho um script que limpa (mata) todos os processos uma vez por dia para o usuário que eu planejo executar script1. Desejo reiniciar o script1 após a limpeza e entre esse intervalo se o script1 parar.

    
por Ciprian Tudor 23.06.2018 / 09:03

2 respostas

1

Instale o script como um systemd service. O systemd irá reiniciá-lo automaticamente se sair.

Isso não é muito difícil, você precisa escrever um pequeno arquivo something.service (com Restarts=always em algum lugar nele), colocar / vinculá-lo no diretório apropriado e emitir alguns comandos systemctl . Veja aqui para um tutorial.

PS: Em 14.04, o systemd está disponível, mas não é muito usado pelo próprio sistema. Fica mais difundido em versões posteriores.

    
por 23.06.2018 / 12:26
1

Geralmente, um processo pode ser iniciado apenas por um processo em execução. Se todos os processos da conta de script forem eliminados, a solução poderá estar fora do escopo desse usuário apenas. Mas os dois casos (mortos por root vs. travaram / saíram) podem ser tratados de maneira diferente.

reiniciar após sair

Essa é fácil:

#! /bin/bash
while true; do /path/to/script.sh; done

reiniciar após a morte diária

  1. O script kill reinicia o script de wrapper acima.
  2. Um script executado como um usuário diferente verifica regularmente se o script ainda está em execução e o reinicia, se necessário. Isso requer sudo / su ou um binário SUID, se não for executado pelo root.
por 23.06.2018 / 13:30