Digamos que eu inicie um processo no terminal e ele envie a saída para erro padrão enquanto é executado. Quero mover o processo para segundo plano e também silenciá-lo ao mesmo tempo.
Existe uma maneira de fazer isso sem parar o processo e iniciá-lo novamente usando &
e > /dev/null 2>&1
? Gostaria de saber se existe algum comando que executa bg
e também pode alterar os descritores de saída do processo de destino.
fonte
SIGSTOP
para um processo (ou como você diz que faz CTRL + Z ) não silencia um processo. Para um processo!O processo que é executado a partir de um terminal tem seu stdin, stdout e stderr vinculado ao terminal e você não pode fazer nada a respeito sem recuperar o controle sobre esse terminal ... Normalmente. Mas existem algumas ferramentas complicadas que realmente permitem que você faça isso. Dê uma olhada neste exemplo . E outros programas como os
retty
mencionados lá.fonte
Eu discordo de andcoz 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. Isso reportará o número do trabalho e a identificação do processo. Você pode prosseguir e mover o processo para o segundo plano usandobg %1
(para o trabalho nº 1). Embora isso mova o processo para o segundo plano, ele não silencia a saída. Para silenciar a saída, você pode usargdb
para redirecionar toda a saída para/dev/null
.Isso foi muito bem descrito anteriormente em /programming/593724/redirect-stderr-stdout-of-a-process-after-its-been-started-using-command-lin/593764#593764 .
fonte
Ainda outra ferramenta de linha de comando é
detach
. A versão mais recente suporta a gravação de arquivos pid, usando arquivos para stdin, stdout e stderr e executando em primeiro plano. (O sitedetach
também discute ferramentas semelhantes.)http://inglorion.net/software/detach/
fonte