como garantir que um programa esteja sempre em execução, mas sem acesso root?

3

Atualmente, eu preciso ter um programa em execução o tempo todo, mas quando o servidor é reinicializado, eu preciso executar manualmente o programa. E às vezes não estou disponível quando isso acontece.

Não consigo usar uma configuração normal para reiniciar meu programa quando o servidor está sendo inicializado porque não tenho acesso root e o administrador não deseja instalá-lo.

    
por Aragorn 15.09.2010 / 07:23

5 respostas

4

Postei isso em uma pergunta semelhante

Se você tem um daemon cron , um dos ganchos de tempo cron pré-definidos é @reboot , que é executado naturalmente quando o sistema é iniciado. Execute crontab -e para editar seu arquivo crontab e adicione uma linha:

@reboot /your/command/here

Foi-me dito que isto não está definido para todos os daemons cron, então você terá que verificar para ver se funciona em seu particular

    
por 15.09.2010 / 07:45
3

Uma solução mais geral seria configurar um cronjob que verifique se o seu programa está sendo executado a cada poucos minutos. Eu executo dircproxy como usuário regular e a entrada crontab se parece com:

* / 10 * * * * /path/to/dircproxy_cron.sh

    
por 15.09.2010 / 09:42
1

Esta não é uma resposta à pergunta geral, mas provavelmente deve ser mencionada.

Unix e Unix-like sistemas são frequentemente utilizados em ambientes multi-usuário, uma vez que são sistemas operacionais multi-usuário. Por causa disso, os administradores de tais sistemas geralmente hesitam em instalar serviços ou softwares desconhecidos porque isso pode levar a instabilidade ou insegurança para todos os usuários do sistema. Assim, acho que os primeiros passos são

  1. Determine por que o administrador não deseja que o serviço seja instalado.
  2. Pense se você pode realizar a tarefa de alguma forma que atenda às preocupações do administrador.
  3. Se não, determine se as preocupações do administrador são válidas. Ou seja, pergunte a si mesmo: "Isso poderia causar instabilidade ou outros usuários?", "Isso poderia afetar o desempenho de outros usuários?" E "Isso poderia deixar outros usuários abertos a vulnerabilidades de segurança?"
  4. Se a resposta a todos for não, pergunte a si mesmo se isso sem a permissão do administrador poderia causar problemas.
  5. Se isso não acontecer ou se você estiver disposto a aceitar o risco, tente um dos métodos mencionados acima.
por 15.09.2010 / 21:56
0

Uma solução ainda mais confiável seria usar uma ferramenta de monitoramento como Monit ou deus que detecta automaticamente que um processo está inativo e o reinicia, quer tenha ocorrido durante a reinicialização ou não.

Você pode pensar que é um exagero, mas na verdade a configuração do Monit é simples como

check process foo with pidfile /var/run/foo.pid
  start program  "foo_start"
  stop program  "foo_stop"
  if 5 restarts within 5 cycles then timeout

É claro que a suposição é que o administrador está disposto a instalar a ferramenta de monitoramento para você, para que possa haver um problema de ovo e galinha:)

    
por 15.09.2010 / 18:49
0

Eu recomendaria o link que irá supervisionar o seu processo, reiniciá-lo para você e tem muita configuração e deve ser executado como um usuário normal .

    
por 15.09.2010 / 21:07