nohup: ignora l'input e reindirizza stderr a stdout


19

Sto iniziando la mia domanda in background usando nohupcome indicato di seguito -

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

Ma ogni volta che vedo questo messaggio -

nohup: ignoring input and redirecting stderr to stdout

Ci saranno problemi se vedo questo messaggio? Cosa significa e come posso evitarlo?


2
hai provato:nohup java -jar blaa bla >/tmp/test.out 2>&1 &
Rahul Patil il

invece di usare /tmp/test.outposso usare exhibitor.out. Scusami per aver fatto una domanda stupida dato che sono abbastanza nuovo con queste cose ...
Arsenale,

si .. puoi usare .. questo è solo errore std / file di output. ma qual è lo stato dopo l'aggiunta 2>&1?
Rahul Patil,

Risposte:


20

Per assicurarsi che l'applicazione sia dissociata dal suo terminale - in modo che non interferisca con i comandi di primo piano e continuerà a funzionare dopo il logout - si nohupassicura che né stdin né stdout né stderr siano un dispositivo simile al terminale. La documentazione descrive quali azioni intraprende:

Se l'output standard è un terminale, tutto l'output scritto dall'utilità denominata nel suo output standard deve essere aggiunto alla fine del file nohup.out nella directory corrente. Se nohup.out non può essere creato o aperto per l'aggiunta, l'output deve essere aggiunto alla fine del file nohup.out nella directory specificata dalla variabile d'ambiente HOME. Se nessuno dei file può essere creato o aperto per l'aggiunta, l'utilità non deve essere invocata.

Se l'errore standard è un terminale, tutto l'output scritto dall'utilità denominata nell'errore standard deve essere reindirizzato allo stesso descrittore di file dell'output standard.

Hai reindirizzato stdout a un file quando hai digitato la > exhibitor.outtua riga di comando. Se stai bene con lo stderr della tua applicazione indirizzato allo stesso file del suo stdout, non devi fare nient'altro. Oppure puoi reindirizzare stderr a un altro file aggiungendo un argomento come 2> exhibitor.err. (Grazie a un utente sconosciuto - le mie notifiche non hanno mostrato un nome - per aver suggerito l'inclusione di questa alternativa.)


2
E 'anche utile per chiudere l'ingresso fd manualmente in questo modo: </dev/null; Linux lo farà automaticamente, ma se non lo fai manualmente otterrai comunque una riga nell'output di nohup che recita:nohup: ignoring input
wulfgarpro,

17

È possibile eliminare il messaggio se si reindirizza l'errore std all'output std:

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 &

4

Nella mia situazione, reindirizzo stdout e stderr, ma visualizza anche quanto segue nel file di registro:

nohup: ignoring input

Per rimuovere questo avviso, devi anche reindirizzare stdin come segue:

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 &

Ho capito che questa risposta è decisamente in ritardo per te, ma forse aiuterebbe gli altri.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.