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

Kiran
fuente
Eche un vistazo a esta página. xaprb.com/blog/2006/06/06/what-does-devnull-21-mean
richard.g

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

mal muerto
fuente
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.

Jim Hunziker
fuente