nohup: ignorar la entrada y redirigir stderr a stdout

19

Estoy comenzando mi aplicación en segundo plano usando nohupcomo se menciona a continuación:

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

Pero cada vez que veo este mensaje ...

nohup: ignoring input and redirecting stderr to stdout

¿Habrá algún problema si veo este mensaje? ¿Qué significa y cómo puedo evitarlo?

arsenal
fuente
2
¿Has probado:nohup java -jar blaa bla >/tmp/test.out 2>&1 &
Rahul Patil
en lugar de usar /tmp/test.outpuedo usar exhibitor.out. Lo siento por preguntar pregunta tonta como yo soy bastante nuevo en estas cosas ..
Arsenal
sí ... puedes usar ... eso es solo un error estándar / archivo de salida. pero, ¿cuál es el estado después de agregar 2>&1?
Rahul Patil

Respuestas:

20

Para asegurarse de que su aplicación esté desasociada de su terminal, para que no interfiera con los comandos de primer plano y continúe ejecutándose después de cerrar sesión, se nohupasegura que ni stdin ni stdout ni stderr sean dispositivos similares a terminales. La documentación describe qué acciones toma:

Si la salida estándar es un terminal, toda la salida escrita por la utilidad nombrada en su salida estándar se agregará al final del archivo nohup.out en el directorio actual. Si nohup.out no se puede crear o abrir para agregar, la salida se agregará al final del archivo nohup.out en el directorio especificado por la variable de entorno HOME. Si ninguno de los dos archivos puede crearse o abrirse para anexarse, no se invocará la utilidad.

Si el error estándar es un terminal, toda la salida escrita por la utilidad nombrada en su error estándar se redirigirá al mismo descriptor de archivo que la salida estándar.

Redirigió stdout a un archivo cuando escribió > exhibitor.outen su línea de comando. Si está de acuerdo con que el stderr de su aplicación se dirija al mismo archivo que su stdout, no necesita hacer nada más. O puede redirigir stderr a un archivo diferente agregando un argumento como 2> exhibitor.err. (Gracias a un usuario desconocido, mis notificaciones no mostraron un nombre, por sugerir la inclusión de esta alternativa).

Mark Plotnick
fuente
2
Es también útil para cerrar la entrada fd manualmente así: </dev/null; Linux lo hará automáticamente, pero si no se hace manualmente, aún obtendrá una línea en la salida de nohup que dice:nohup: ignoring input
wulfgarpro
17

Puede deshacerse del mensaje si redirige el error estándar a la salida estándar:

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
fuente
4

En mi situación, redirijo stdout y stderr, pero también muestra lo siguiente en el archivo de registro:

nohup: ignoring input

Para eliminar esa advertencia, también debe redirigir stdin de la siguiente manera:

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 &

Sé que esta respuesta definitivamente es tarde para ti, pero tal vez ayudaría a otros.

styshoo
fuente