Cómo redirigir la salida de un programa en ejecución a / dev / null


19

Sé que para suprimir la salida de un programa, puedo redirigirlo a /dev/null, por ejemplo, para ocultar todos los mensajes de error y advertencia de Chrome, puedo iniciar el programa de esta manera.

chromium-browser 2> /dev/null &

Sin embargo, si me olvido de los mensajes de error y escribo

chromium-browser &

(lo cual es bastante molesto cuando aparecen en medio de un comando) No sé qué hacer, excepto detener la aplicación y volver a iniciarla correctamente.

¿Puedo de alguna manera redirigir la salida de error sin reiniciar la aplicación?

Respuestas:


8

También puede iniciar el navegador con nohup y luego cerrar la ventana del terminal con lo siguiente:

nohup chromium-browser &

De esta manera, el navegador se iniciará y se desconectará de la consola, que luego se puede cerrar en silencio.


2
eso es aceptable, excepto por el hecho de que tendré que recordar escribirnohup
— phunehehe

55
@phu En zsh al menos puedes poner setopt nohuptu .zshrcy no hará nada con todo lo que ejecutes; No estoy seguro acerca de otros proyectiles
— Michael Mrozek

sí, genial, me gusta de esta manera!
— phunehehe

3
O puede crear un alias ... alias chromium = nohup chromium
— Pablo Olmos de Aguilera C.

22

Esto fue respondido aquí: aquí por vladr . La respuesta es (citando):

  • adjunte al proceso en cuestión usando gdb y ejecute:
  • p dup2 (abierto ("/ dev / null", 0), 1) (para redireccionamiento stdout)
  • p dup2 (abierto ("/ dev / null", 0), 2) (para redireccionamiento stderr)
  • despegar
  • dejar

Lo probé en el siguiente script:

[edición después del primer comentario:]

duermo 10 # para poder tener tiempo para unirme al proceso
si ["$ sonorfather" == "padre"] # evita la recursión infinita 
luego 
   sonorfather = hijo ./test & 
fi 

aunque cierto 
hacer 
   echo "stdout $ sonorfather" 
   echo "stderr $ sonorfather"> & 2 
   dormir 1 
hecho 

Inhabilité la salida stderr antes de que se creara el proceso hijo, aquí está la salida:

padre stdout 
hijo stdout 
padre stdout 
hijo stdout 
[y así...]. 

Espero que esto responda su pregunta: el proceso hijo stderr también fue redirigido.


3
eso fue muy bueno, pero entonces puedo tener problemas con el cromo, ya que genera un nuevo proceso para cada pestaña del navegador, ¿de todos modos resolver?
— phunehehe

Edité mi publicación para responderte.
— Mike Perdide

¿Parece que tendré que redirigir la salida antes de que se creen los procesos secundarios? Gracias por el conocimiento, pero en cuanto a la complejidad que acababa de ir con nohup:)
— phunehehe

Técnicamente, esto filtra descriptores de archivos duplicados /dev/null, pero en la práctica eso no afecta significativamente nada.
— Kevin

6

También puede configurar un alias para chromium-browserejecutar en su lugarchromium-browser 2> /dev/null

por ejemplo, si está usando bash, edite /home/username/.bashrc y agregue la línea:

chromium-browser='chromium-browser 2> /dev/null'

o mejor aún

chrome='chromium-browser 2> /dev/null'

y guardar algunas pulsaciones de teclas.

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.