nohup: ignorando entrada e redirecionando stderr para stdout

19

Estou iniciando meu aplicativo em segundo plano usando nohupcomo mencionado abaixo -

root@phx5qa01c:/bezook# nohup java -jar ./exhibitor-1.5.1/lib/exhibitor-1.5.1-jar-with-dependencies.jar -c file --fsconfigdir /opt/exhibitor/conf --hostname phx5qa01c.phx.qa.host.com > exhibitor.out &
[1] 30781
root@phx5qa01c:/bezook# nohup: ignoring input and redirecting stderr to stdout

Mas toda vez que vejo essa mensagem -

nohup: ignoring input and redirecting stderr to stdout

Haverá algum problema se eu vir esta mensagem? O que isso significa e como posso evitá-lo?

arsenal
fonte
2
você tentou:nohup java -jar blaa bla >/tmp/test.out 2>&1 &
Rahul Patil
em vez de usar /tmp/test.outposso usar exhibitor.out. Desculpe por perguntar pergunta idiota como eu sou muito novo para estas coisas ..
arsenal
sim .. você pode usar .. isso é apenas erro std / arquivo de saída. mas qual é o status após a adição 2>&1?
Rahul Patil

Respostas:

20

Para garantir que seu aplicativo seja desassociado de seu terminal - para que ele não interfira nos comandos de primeiro plano e continue a ser executado após o logoff -, nohupgarante que nem stdin, nem stdout, nem stderr sejam um dispositivo semelhante a um terminal. A documentação descreve quais ações são executadas:

Se a saída padrão for um terminal, toda a saída gravada pelo utilitário nomeado em sua saída padrão será anexada ao final do arquivo nohup.out no diretório atual. Se não for possível criar ou abrir nohup.out para anexar, a saída será anexada ao final do arquivo nohup.out no diretório especificado pela variável de ambiente HOME. Se nenhum arquivo puder ser criado ou aberto para anexar, o utilitário não deverá ser chamado.

Se o erro padrão for um terminal, toda a saída gravada pelo utilitário nomeado em seu erro padrão será redirecionada para o mesmo descritor de arquivo que a saída padrão.

Você redirecionou o stdout para um arquivo quando digitou > exhibitor.outsua linha de comando. Se você concorda com o direcionamento do stderr do aplicativo para o mesmo arquivo que o stdout, não precisa fazer mais nada. Ou você pode redirecionar o stderr para um arquivo diferente adicionando um argumento como 2> exhibitor.err. (Graças a um usuário desconhecido - minhas notificações não mostraram um nome - por sugerir a inclusão dessa alternativa.)

Mark Plotnick
fonte
2
Também é útil para fechar a entrada fd manualmente assim: </dev/null; Linux vai fazer isso automaticamente, mas se não for feito manualmente, você ainda vai ter uma linha na saída do nohup que lê:nohup: ignoring input
wulfgarpro
17

Você pode se livrar da mensagem se redirecionar o erro padrão para a saída padrão:

nohup java -jar ./exhibitor-1.5.1/lib/exhibitor-1.5.1-jar-with-dependencies.jar -c file --fsconfigdir /opt/exhibitor/conf --hostname phx5qa01c.phx.qa.host.com > exhibitor.out 2>&1 &
shargors
fonte
4

Na minha situação, redireciono stdout e stderr, mas ele também exibe o seguinte no arquivo de log:

nohup: ignoring input

Para remover esse aviso, você também deve redirecionar o stdin da seguinte maneira:

nohup java -jar ./exhibitor-1.5.1/lib/exhibitor-1.5.1-jar-with-dependencies.jar -c file --fsconfigdir /opt/exhibitor/conf --hostname phx5qa01c.phx.qa.host.com > exhibitor.out 2>&1  </dev/null &

Eu sei que essa resposta está definitivamente atrasada para você, mas talvez isso ajude outras pessoas.

styshoo
fonte