Diferença funcional entre o comando da tela e o processo em segundo plano

3

Qual é a diferença funcional entre esses dois comandos para executar um aplicativo / processo?

$ screen -d -m -S myapp "/opt/myapp-dir/myapp --some-params"

$ (/opt/myapp-dir/myapp --some-params &)

Assumindo que o programa reside dentro de /opt e lê / escreve de / para /tmp e /var/myapp-data .

    
por Kaveh Shahbazian 10.04.2017 / 16:47

1 resposta

2

  • screen é um emulador de terminal, que multiplexa o terminal virtual do servidor em um. Quando você executar o comando screen , seu programa começará a ser executado em uma janela de terminal virtual de screen (você pode nomear a janela com a opção -t ). Agora você pode desanexar do multiplexador sempre que quiser (usando C-a C-d , assumindo ligações padrão), e voltar sempre que quiser, e (re) anexar com a mesma sessão screen usando screen -rD (ou similar dependendo da sessão status), e terá os mesmos controles

  • O plano de fundo dentro de um subshell será removido para SIGHUP , pois o shell pai não rastreará o neto, mas você não poderá (diretamente) rastrear / controlar o processo, muito menos reconectar recursos que screen fornece. É claro que você pode verificar o status do processo com PID (usando ferramentas como ps / top ou analisando diretamente /proc/PID/ ), mas não sei se isso seria o suficiente no seu caso. Portanto, se você precisar ver qualquer saída do processo (supondo que não haja redirecionamento) ou quiser verificar / controlar o processo, use screen / tmux / byobu ou similar.

por heemayl 10.04.2017 / 17:03