Cómo redirigir la salida de una aplicación en segundo plano a / dev / null


100

Me gustaría redirigir la salida generada desde una aplicación en segundo plano en Linux a / dev / null.

Estoy usando el editor de texto kate e imprime todos los mensajes de depuración en la terminal que me gustaría redirigir a / dev / null.

¿Alguna idea de cómo hacerlo?

Gracias


Respuestas:


230

Tu usas:

yourcommand  > /dev/null 2>&1

Si debe ejecutarse en segundo plano, agregue un &

yourcommand > /dev/null 2>&1 &

>/dev/null 2>&1significa redirigir stdouta /dev/nullY stderral lugar donde stdoutapunta en ese momento

Si quieres stderrque ocurra en la consola y solo stdoutvas a /dev/nullpuedes usar:

yourcommand 2>&1 > /dev/null

En este caso stderrse redirige a stdout(por ejemplo, su consola) y luego el original stdoutse redirige a/dev/null

Si el programa no termina, puede usar:

nohup yourcommand &

Sin ningún parámetro, toda la salida aterriza en nohup.out


ambos funcionan, pero hay una ligera diferencia, pero no
— recuerdes

ah ok lo tengo y agregué la otra versión
— evildead

Si este es el último comando en un archivo bash, una cosa que noté es que deja la consola de comandos que llamó al archivo sin un mensaje.
— Dennis

@elig redirigir la salida de una aplicación que ya se está ejecutando no es posible imo, o al menos no tan fácilmente, porque la redirección vía dup2()ocurre inmediatamente después fork()pero antes exec*(). Una vez que exec*()ha ejecutado el programa, el shell no tiene la capacidad de redirigir la salida de ese proceso. Corrígeme si me equivoco, pero no conozco un shell que haya implementado dicha funcionalidad.
— evildead

3

Estos también redirigirán a ambos:

yourcommand  &> /dev/null

yourcommand  >& /dev/null

aunque el manual de bash dice que se prefiere el primero.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.