No bash, quais são as possíveis consequências negativas da pausa de um processo com control-z?

11

Usando o bash, pode-se pausar um processo com control-z. No entanto, existem circunstâncias ou diretrizes gerais a serem tomadas em relação ao local em que um processo não se comportaria bem ao ser pausado?

Meu cenário específico foi criar um arquivo tar que estava demorando mais que o esperado. Eu queria pausá-lo para colocá-lo em segundo plano, mas decidi não fazê-lo. Minha pergunta não é, obviamente, específica para o alcatrão. Em vez disso, espero entender um pouco melhor o recurso de pausa no bash, bem como o que faria um processo reagir mal ao ser pausado.

Wesley
fonte

Respostas:

3

Tarefas de armazenamento (pvmove, veritas vx-qualquer que seja) que dependem de cópias atômicas. Não é bom se eles ficarem presos fora de seu controle. Depende se a tarefa dispara alguma API e faz o resto do espaço do kernel, então é seguro. Se estiver acontecendo nesse * processo * no seu shell, vá mesmo com a tela e mantenha as mãos afastadas.

Definitivamente, recomendo que você evite pará-los em segundo plano. Comandos que usam buffers como o dd parecem estar em melhor situação, com exceção das unidades de fita mencionadas acima.

(Uma vez eu ganhei uma reinicialização adicional, menos sono e muita paranóia quando isso aconteceu comigo enquanto limpava a bagunça de outras pessoas. Obviamente: não tente usar atalhos se estiver corrigindo os atalhos de outras pessoas ...)

Florian Heigl
fonte
6

Se seu processo estiver gravando dados, lembre-se de que problemas de tempo com dispositivos de acesso não aleatório e buffers podem ser problemáticos. Já vi unidades de fita terem problemas com isso às vezes.

Magalhães
fonte
as sessões de rede / firewall podem expirar e não serem reiniciadas porque o TCP-SYN não está sendo reenviado.
Jippie 25/05
A pilha TCP continuaria enviando ACKs de que a janela está cheia, certo?
Magellan
Manter pacotes ativos não faz parte do protocolo TCP nem do IP; na melhor das hipóteses, faz parte do aplicativo. Portanto, um firewall ou um cliente ou servidor remoto pode atingir o tempo limite de espera de um pacote e soltar o soquete / conexão.
Jippie # 25/12
Não falando com keepalives, esses são obviamente o nível do aplicativo. Estou falando de ACKs para a janela deslizante TCP no nível de Transporte.
Magellan
2

E o cenário mundano: fazer Ctrl-Z, depois esquecê-lo e fazer logoff, e perder o processo! =)

gfountis
fonte
0

Não é realmente uma resposta específica para a pergunta, mas, como alternativa, você pode tentar executar trabalhos simultâneos usando screen. Assim, você pode usar o shell simultaneamente com outro programa.

jhtong
fonte
Sim, a tela é sempre um bom caminho a percorrer. Não sei ao certo como responder ao seu nome.
Wesley
@toiletfreak Como a tela é uma alternativa à pausa? Tela executa um trabalho em segundo plano, certo? Mas ele continua se você retirar a tela ...
Bernhard