Maneira correta de executar uma tarefa / programa raiz no plano de fundo

2

Estou escrevendo um programa que precisa ser executado em segundo plano como root.

(para qualquer usuário)

Para fazer isso, usei o arquivo /etc/rc.local . E parece funcionar.

O problema que estou enfrentando é quando um usuário normal tenta desligue o computador, pois há uma "tarefa" ativa da conta raiz, o usuário normal é colocado para inserir a senha de root.

Isso me fez adivinhar que provavelmente estou fazendo isso de maneira errada. Existe alguma maneira melhor de fazer isso? Eu pensei em algumas correções que podem funcionar, mas eu realmente gostaria de saber como fazer isso corretamente!

    
por Rafael Senties Martinelli 18.12.2014 / 20:19

1 resposta

2

Não. Não depende disso. Se você chamar uma tarefa simples de rc.local, não deverá ter esse comportamento.

Se você deseja executar uma tarefa como raiz em segundo plano: isso é chamado de daemons. Existem mais métodos para fazer isso, os 3 mais prováveis:

  1. Se o demônio fizer algo periodicamente, você pode desenvolvê-lo como um script crontab . É muito claro, embora não seja realmente eficaz.
  2. Você pode criar um serviço para isso também, o que significa: 1. você tinha que desenvolver seu script start / stop em /etc/inittab e 2. você tinha que configurar o serviço com seu systemd (que é provavelmente o seu sistema principal serviço inicial / daemon de serviço). Se aqui você teve problema, suas próximas perguntas são bem-vindas.
  3. As soluções mais robustas estão chegando combinando as duas anteriores. Embora ela também combine os fallbacks. Você implementa um serviço do sistema, o executa como um serviço do sistema e também desenvolve um script testador, que só testa se ele funcionar corretamente. Se não, então mata e reinicia.

Sobre o seu problema real: não, o usuário será solicitado quase certamente não porque um simples daemon em execução. Deve estar em algum outro lugar nas suas configurações. Em um sistema normal, existem cerca de cem processos, e praticamente sempre há tarefas que não podem ser interrompidas de forma limpa (seja por causa de algum problema, ou porque não é necessário, ou porque é impossível). Não causa comportamento problemático nos sistemas, apenas faz as reinicializações mais rápidas. Se você elaborou um pouco que distro você usa, o que você está executando em segundo plano, etc. isso nos ajudou muito.

    
por 18.12.2014 / 20:42