¿Hay alguna manera de redirigir la salida de nohup a un archivo de registro que no sea nohup.out?

113

Frecuentemente uso el programa nohuppara que mis procesos sean inmunes a las interrupciones. Entonces, si quiero hacer que el programa sea programinmune a los bloqueos, utilizo el comando

nohup program &

donde &pone el proceso en segundo plano.

Al comenzar, nohupme da el mensaje:

nohup: agregando salida a `nohup.out '

¿Hay alguna forma de enviar la salida a un archivo que no sea nohup.out? A menudo quiero ejecutar muchos procesos en el mismo directorio usando nohup, pero si hago esto, toda la salida se agrupa en un solo nohup.outarchivo.

La página del manual (por ejemplo, aquí ) no parece tener una opción para especificar el archivo de registro. ¿Puedes por favor confirmar esto? Además, ¿tiene alguna idea de cómo puedo solucionar este problema?

Andrés
fuente
3
Un año tarde, pero se dio una buena respuesta completa aquí: stackoverflow.com/questions/4549489/…
Rahul Jha

Respuestas:

133

La nohuppágina del manual de GNU coreutils indica que puede usar la redirección normal:

Si la entrada estándar es una terminal, rediríjala desde / dev / null. Si la salida estándar es una terminal, agregue la salida a 'nohup.out' si es posible, '$ HOME / nohup.out' de lo contrario. Si el error estándar es un terminal, rediríjalo a la salida estándar. Para guardar la salida en FILE, use 'nohup COMMAND> FILE'.

Editar: No leí tu enlace al principio; es posible que tenga una versión diferente de nohup, aunque esta sección sugiere que aún puede usar la redirección normal:

 nohup.out          The output file of the nohup execution if
                    standard  output is a terminal and if the
                    current directory is writable.

Puede redirigir la salida estándar y el error estándar a diferentes archivos:

nohup myprogram > myprogram.out 2> myprogram.err

o al mismo archivo:

nohup myprogram > myprogram.out 2>&1
lk-
fuente
54
Para responder específicamente: use nohup program > program.out &para escribir la salida en program.outlugar denohup.out
Jim Paris
44
Y esto no es específico para las utilidades de GNU, el comportamiento lo especifica POSIX.
Gilles
3
No parece funcionar. Redirige la salida del comando nohup en lugar de la salida de myprogram.
Kris
2
@Kris Redirection debería tener lugar antes del &personaje final
yunzen