Como posso portar um daemon do FreeBSD para o Ubuntu?

5

Eu tinha uma máquina FreeBSD e tinha um comando /usr/sbin/daemon que poderia rodar meu programa em segundo plano.

A questão é como fazer algo semelhante no Ubuntu? Eu gostaria de algo que eu possa colocar em um script de inicialização.
O que quero dizer é que meu programa não pode se colocar em segundo plano quando é iniciado.

Eu tentei:

start-stop-daemon --start --quiet --pidfile $PIDSPATH/$PIDFILE --exec $DAEMON

Mas apenas inicia o programa e eu devo esperar que ele termine.

    
por Sergey 23.02.2012 / 11:26

2 respostas

7

Use a opção --background de start-stop-daemon . A partir da página de manual do start-stop-daemon (8) :

  

-b, --background
  Normalmente usado com programas que não se destacam por conta própria.   Esta opção forçará o daemon start-stop a bifurcar antes de iniciar o   processo, e forçá-lo em segundo plano. ATENÇÃO: start-stop-daemon   não pode verificar o status de saída se o processo não for executado por   qualquer razão. Este é um último recurso, e destina-se apenas a programas   que ou não faz sentido forking por conta própria, ou onde não é   possível adicionar o código para eles mesmos fazerem isso.

Em um shell, os programas podem ser em background com & como em:

$ myprogram &
[1] 5042
    
por Lekensteyn 23.02.2012 / 11:50
3

Se você está apenas olhando para executar algo e desanexá-lo (para que ele seja executado em segundo plano), existem meia dúzia de métodos que Eu avaliei ontem . O mais fácil é apenas colocar o comando entre parênteses:

(command)

Você pode fechar o terminal e continuar com a vida e o aplicativo continuará funcionando. Não há, obviamente, nenhum controle sobre o processo, agora com falta de procurar e nunhá-lo ( kill , killall , etc), ou de desistir de si mesmo.

Se você precisa de algo um pouco mais elegante, eu vejo scripts iniciantes. O Upstart é o substituto do sistema init do System V (ou seja, os arquivos em /etc/init.d/ ). Para ter uma idéia de como um script Upstart se parece, você pode ver as tarefas existentes do Upstart em /etc/init/ .

Há um belo livro de receitas de exemplos no site do Upstart:

por Oli 23.02.2012 / 11:54

Tags