perguntas sobre o trabalho de base do bash

1
  1. Como o trabalho em segundo plano ainda pode ser executado mesmo se o usuário fizer logout, qual é o objetivo de usar nohup e tela?

  2. Qual é a diferença entre CTRL + Z e parar para suspender um trabalho em segundo plano? Há outro comando "stop", que interrompe um trabalho em segundo plano. Isso não mata o trabalho, mas não continuará sendo executado até que seja reiniciado. Gostaria de saber qual é a diferença entre "stop" e CTRL + Z? para "parar", consulte link

  3. para tornar um trabalho de segundo plano não interativo, está correto?

command &lt<inputfile> &gt<outputfile>

E se eu quiser acrescentar a saída a um arquivo existente enquanto mantém o plano de fundo do trabalho?

    
por Tim 04.02.2010 / 01:47

3 respostas

4

Trabalhos em segundo plano

Trabalhos em segundo plano normais não sobrevivem a uma terminação do shell pai:

pigpen ~: yes > /dev/null &

Isso não sobreviverá a um logout.

No entanto, isso irá:

pigpen ~: nohup yes &

nohup impede que o processo receba um sinal SIGHUP no logout.

A tela, por outro lado, mantém a ilusão de que o usuário está sempre conectado e permite que o usuário reconecte a qualquer momento. Isso tem a vantagem de poder continuar a interagir com o programa uma vez reconectado (impossível com o nohup sozinho).

Ctrl + C

Ctrl + C envia um SIGINT para o processo, que ele pode capturar e ignorar (incomum).

Sugiro ler a página de manual do bash ; especificamente as seções sobre Sinais e Job Control.

Ctrl + Z

Você editou sua pergunta para usar Ctrl + Z. Ctrl + Z envia um sinal SIGTSTP para o processo, suspendendo-o. Este processo pode ser continuado posteriormente enviando um sinal SIGCONT.

Os sinais SIGTSTP podem ser capturados pelo programa e ignorados.

Sinal SIGSTP

O sinal SIGSTP é diferente do SIGTSTP, pois não pode ser capturado pelo programa em execução. Seu comportamento é idêntico ao comportamento de um SIGTSTP não detectado.

Recursos

por 04.02.2010 / 01:56
3
  1. Trabalhos em segundo plano só continuarão se você os destacar (eu acredito) e você não conseguir obter a saída ou enviar entrada para eles posteriormente. A tela permitirá que você se conecte a ela mais tarde, como se nunca a tivesse deixado.
  2. Control + c é uma interrupção do teclado, tudo o que faz é enviar um sinal para o programa em execução, que normalmente responde saindo, mas não é forçado a isso. Pará-lo enviará um sinal diferente, onde o aplicativo geralmente parará o que está fazendo até receber um sinal de continuação (isso pode ser feito com o controle + z).
por 04.02.2010 / 01:51
2
  1. o trabalho em segundo plano vai morrer se você saia do shell em que você começou. (por exemplo, SSH), é por isso que você usa nohup ou tela. Se você tem um shell bash moderno, há um comando disown -h. veja man page of bash para mais informações
  2. Ctrl-C e suspender são diferentes. Ctrl-C termina o processo.
  3. Para anexar a saída ao arquivo existente: %código%
  4. ctrl-Z suspende o processo, traga no fundo e dar o controle de volta para você. Eu não sei o significado exato da sua "parada"
  5. Para anexar saída e colocar em segundo plano: 1>>/path/existing_file
por 04.02.2010 / 01:55

Tags