Como posso mover um processo para o segundo plano e também silenciar sua saída?

9

Digamos que inicie um processo no terminal e envie a saída para um erro padrão enquanto ele é executado. Eu quero mover o processo para o segundo plano e também silenciá-lo ao mesmo tempo.

Existe uma maneira de fazer isso sem interromper o processo e iniciá-lo novamente usando & e > /dev/null 2>&1 ? Eu estou querendo saber se existe algum comando que executa bg e pode alterar os descritores de saída do processo de destino também.

    
por dan 14.10.2011 / 18:44

4 respostas

8

Tarde demais. Depois que um processo é iniciado, o shell não tem mais controle sobre os descritores de arquivos process , então você não pode silenciá-lo por um comando shell.

Você só pode tentar matar um SIGHUP no processo. Se o seu processo manuseá-lo corretamente , ele deverá ser removido de controlando tty . Infelizmente, muitos softwares não lidam com isso corretamente e simplesmente morrem.

    
por 14.10.2011 / 19:21
5

O processo que é executado a partir de um terminal tem seu stdin, stdout e stderr ligados ao terminal e você não pode fazer nada sobre isso sem recuperar o controle sobre esse terminal ... Normalmente. Mas existem algumas ferramentas complicadas que realmente permitem que você faça isso. Dê uma olhada em este exemplo . E outros programas como retty mencionaram lá.

    
por 14.10.2011 / 19:26
3

Eu não concordo com o fato de que é tarde demais para silenciar a saída.

Supondo que o processo esteja sendo executado em primeiro plano, use Ctrl-Z para suspender o processo. Ao fazer isso, você informará o número do trabalho e o ID do processo. Você pode ir em frente e mover o processo para o segundo plano usando bg %1 (para o job # 1). Embora isso mova o processo para o segundo plano, ele não silencia a saída. Para silenciar a saída, você pode usar gdb para redirecionar toda a saída para /dev/null .

Isso foi muito bem descrito anteriormente em link .

    
por 16.10.2011 / 20:33
0

No entanto, outra ferramenta de linha de comando é detach . A última versão suporta escrever pidfiles, usando arquivos para stdin, stdout e stderr, e rodando em primeiro plano. (O site de detach também discute ferramentas semelhantes.)

link

    
por 16.10.2011 / 18:48