Ou você pode executá-lo na tela:
screen -dm bash -c '/path/to/your/program'
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?
Ou você pode executá-lo na tela:
screen -dm bash -c '/path/to/your/program'
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.
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.
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