nohup: ignorer l'entrée et rediriger stderr vers stdout


19

Je démarre ma candidature en arrière-plan en utilisant nohupcomme mentionné ci-dessous -

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

Mais chaque fois que je vois ce message -

nohup: ignoring input and redirecting stderr to stdout

Y aura-t-il un problème si je vois ce message? Qu'est-ce que cela signifie et comment puis-je l'éviter?


2
avez-vous essayé:nohup java -jar blaa bla >/tmp/test.out 2>&1 &
Rahul Patil

au lieu d'utiliser /tmp/test.outpuis-je utiliser exhibitor.out. Désolé de poser une question stupide car je suis assez nouveau dans ces choses ..
arsenal

oui .. vous pouvez utiliser .. c'est juste un fichier d'erreur / sortie std. mais quel est le statut après l'ajout 2>&1?
Rahul Patil

Réponses:


20

Pour vous assurer que votre application est dissociée de son terminal - afin qu'elle n'interfère pas avec les commandes de premier plan et continue de s'exécuter après votre déconnexion - nohupgarantit que ni stdin, ni stdout ni stderr ne sont un périphérique de type terminal. La documentation décrit les actions à entreprendre:

Si la sortie standard est un terminal, toutes les sorties écrites par l'utilitaire nommé sur sa sortie standard doivent être ajoutées à la fin du fichier nohup.out dans le répertoire courant. Si nohup.out ne peut pas être créé ou ouvert pour être ajouté, la sortie doit être ajoutée à la fin du fichier nohup.out dans le répertoire spécifié par la variable d'environnement HOME. Si aucun fichier ne peut être créé ou ouvert pour être ajouté, l'utilitaire ne doit pas être invoqué.

Si l'erreur standard est un terminal, toutes les sorties écrites par l'utilitaire nommé dans son erreur standard doivent être redirigées vers le même descripteur de fichier que la sortie standard.

Vous avez redirigé stdout vers un fichier lorsque vous avez tapé > exhibitor.outvotre ligne de commande. Si vous êtes d'accord pour que stderr de votre application soit dirigé vers le même fichier que sa sortie standard, vous n'avez rien d'autre à faire. Ou vous pouvez rediriger stderr vers un autre fichier en ajoutant un argument tel que 2> exhibitor.err. (Merci à un utilisateur inconnu - mes notifications n'ont pas montré de nom - pour avoir suggéré l'inclusion de cette alternative.)


2
Il est également utile de fermer l'entrée fd manuellement comme ceci: </dev/null; Linux le fera automatiquement, mais si cela n'est pas fait manuellement, vous obtiendrez toujours une ligne dans la sortie de nohup qui se lit comme suit:nohup: ignoring input
wulfgarpro

17

Vous pouvez vous débarrasser du message si vous redirigez l'erreur std vers la sortie 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

Dans ma situation, je redirige stdout et stderr, mais il affiche également ce qui suit dans le fichier journal:

nohup: ignoring input

Pour supprimer cet avertissement, vous devez également rediriger stdin comme suit:

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 &

Je sais que cette réponse est définitivement en retard pour vous, mais peut-être que cela aiderait les autres.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.