nohup vs. tela

39

No passado, eu costumava nohupexecutar grandes trabalhos em segundo plano, mas notei que muitas pessoas usam screennesse contexto. Será que screenfornecer algum tipo de vantagem funcional que eu sou desconhecem, ou é apenas uma questão de preferência?

HalosGhost
fonte

Respostas:

25

Ambos têm suas próprias vantagens e desvantagens:

nohup:

  1. é bom usar nohup para executar processos em segundo plano quando os processos não precisam de nenhuma entrada do usuário, como um servidor web ou qualquer outro processo de servidor como esse.
  2. nohup cria log no diretório de execução do processo. O nome do arquivo de log é nohup.out.
  3. Evita que o processo seja interrompido devido a Ctrl+ Ccombinação de teclas errada ou semelhante. Apenas uma salvaguarda.
  4. Normalmente, é instalado por padrão com a configuração básica. Não há necessidade de instalar separadamente como a tela.
  5. Sua funcionalidade é muito específica para executar um trabalho em segundo plano e descarregar a saída. Consome pouca memória.

tela:

  1. Tem que instalar separadamente. Você não pode ir a um data center ou fazer login em qualquer caixa e esperar que a tela esteja presente.
  2. É bom gerenciar vários terminais em assuntos separados e dar nomes a eles.
  3. É mais um gerenciador de terminal e não um comando para executar um processo por tempo infinito, como nohup.
  4. É mais adequado se o processo precisar de entrada do usuário. Como scripts de instalação, solicitações de sim / não.
  5. Com toneladas de recursos, vem sua memória. Mas, concordou, alguns são realmente ótimos recursos.

@rahmu, nunca vou adivinhar pid se quiser matá-lo. Certifique-se antes de matar alguém / alguma coisa;).

Melhor maneira em ambos os casos para tela e nohup é: ps -eaf | grep "nohup" | grep "your proc name/keyword".

Use a tela e verifique o que está sendo executado nela.

Para concluir, são duas coisas diferentes feitas com agendas diferentes, portanto a comparação é difícil.

mrtipale
fonte
20

A tela possui vários recursos. Não apenas "daemoniza" um processo, é mais um gerenciador de janelas para terminais.

Pode ser usado se o processo precisar de entrada em algum momento, você pode verificar a saída do processo, reconectar ao terminal, ...

Portanto, não, não é apenas uma questão de preferência, eles não são a mesma coisa.

Esteira
fonte
4
Você também pode verificar a saída nohup [...] > fileName.log 2>&1. Além disso, isso significa que a saída não é perdida.
Sardathrion - Restabelece Monica
11
Eu gosto dessa descrição da tela: "um gerenciador de janelas para terminais"!
Rickumali
7

screen permite:

  1. volte para a tela atual, envie sinais, veja a velocidade, veja se há mensagens de erro etc.
  2. name processa com um título significativo. se você deseja matar um processo, não precisa adivinhar o ID do processo.
avi
fonte
-2
  1. o progresso do processo também pode ser verificado através nohupda depuração dos campos do banco de dados.
  2. ps ax | grep nohup mostrará o ID do processo e você poderá matá-lo.
  3. nohupé mais rápido. O motivo simples é que depende da conexão com a internet entre o seu PC e o servidor. Sempre que a internet fica lenta, o processo também fica lento.
Nikolay
fonte
2
Eu não entendo o ponto 3. Você pode elaborar?
mattdm
11
o ponto 2 está incorreto.
Jggunjer
# 2 mostrará o processo para matar apenas se houver apenas um processo nohup em execução. Senão, ele mostrará vários. Em ambos os casos, o ponto 2 não está totalmente incorreto.
Anil_M 03/09