Executando um aplicativo em segundo plano

2

Eu tenho um aplicativo da web em um servidor freebsd. Um aplicativo é um único arquivo executável, com um servidor da web integrado. Meu shell padrão é zsh.

Quando estou executando como "./my_website &" e fecha uma conexão, ela termina. No entanto, quando eu alternar para o bash por "/ usr / local / bin / bash" e executar o meu site da mesma forma "./my_website &", saia do bash e feche uma conexão, meu site continua trabalhando - exatamente o que eu preciso.

O que está acontecendo aqui - por que ele continua sendo executado no bash depois que eu fecho uma conexão com meu servidor?

É uma boa prática executar um aplicativo em segundo plano dessa maneira? Se não, qual é a maneira correta de executar meu site para que ele não termine depois de desconectar?

    
por Dari 21.09.2017 / 09:30

4 respostas

1

Ou você pode executá-lo na tela:

screen -dm bash -c '/path/to/your/program'
    
por 21.09.2017 / 10:16
0

A maneira correta é transformar seu aplicativo em um serviço do sistema e adicionar yourapp_enable="YES" no /etc/rc.conf para [re] iniciá-lo automaticamente. Consulte o artigo de script rc.d no BSD , por exemplo.

    
por 21.09.2017 / 09:49
0

Você precisa usar o comando nohup

nohup ./my_website &

Ele permitirá que o processo seja executado após o processo pai ser encerrado / excluído, independentemente do shell.

    
por 21.09.2017 / 09:57
0

Depende do seu objetivo. Se você precisar rodar este servidor web por um curto período de tempo (desenvolvimento / teste), você pode usar o screen / tmux e deixá-lo em sessão aberta.

Se você deseja executar este aplicativo na produção, é melhor escrever o script de inicialização. Se este aplicativo não puder demonizar a si mesmo, você poderá usar o daemon (8 ) . Eu recomendo ler scripts rc.d práticos no BSD , também você pode encontrar muitos exemplos na árvore de ports. Para encontrar scripts rc com daemon, você pode usar o comando find /usr/ports/ -depth 4 -name *.in | xargs fgrep -l /usr/sbin/daemon

    
por 21.09.2017 / 17:05