User Tools

Site Tools


fore_background_desvincular_procesos_de_la_shell

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
fore_background_desvincular_procesos_de_la_shell [2023/10/29 18:44] busindrefore_background_desvincular_procesos_de_la_shell [2024/02/13 17:16] (current) – [Conceptos básicos sobre entrada / salida estándar y redirecciones] busindre
Line 246: Line 246:
 NOTA: No todos los procesos sobreviven al cerrar la terminal, pese a que se haya desvinculado, un ejemplo puede ser tcpdump cuando no se redirige a un fichero la salida. NOTA: No todos los procesos sobreviven al cerrar la terminal, pese a que se haya desvinculado, un ejemplo puede ser tcpdump cuando no se redirige a un fichero la salida.
  
-==== Recuperar la salida de un comando que se ejecuta en segundo plano ====+==== Recuperar la salida (stdout / stderr) de un comando que se ejecuta en segundo plano ====
  
-Si se cerro la terminal donde se puso un programa en segundo plano y además se desvinculó previamente, este quedará en segundo plano funcionando. Reptyr no no sirve aquí ya que se cerró la terminal, pero con un depurador se puede obtener la salida del comando que está en segundo plano (XXX es el PID).+Si se cerro la terminal donde se puso un programa en segundo plano y además se desvinculó previamente, este quedará en segundo plano funcionando. Reptyr no sirve aquí ya que se cerró la terminal, pero con un depurador se puede obtener la salida del comando que está en segundo plano (XXX es el PID).
 <code bash>strace -pXXX -s9999 -e write</code> <code bash>strace -pXXX -s9999 -e write</code>
  
 +
 +Usando Ggb también puede cambiarse el stdout (1) y stderr (2) de un proceso en ejecución.
 +<code bash>
 +# PID: XXXX
 +gdb -p XXXX
 +
 +# Cambiar la salida estándar al fichero /tmp/stdout.
 +p (int)dup2((int)open("/tmp/stdout", 1089, 0777), 1)
 +# Redirige la salida de error a /dev/null.
 +p (int)dup2((int)open("/dev/null", 1089, 0777), 2)
 +# Redireccionando con gdb la salida de error a la terminal virtual /dev/pts/3.
 +p (int)dup2((int)open("/dev/pts/3", 1089, 0777), 2)</code>
 ==== Conceptos básicos sobre entrada / salida estándar y redirecciones ==== ==== Conceptos básicos sobre entrada / salida estándar y redirecciones ====
  
Line 282: Line 294:
 parámetro : c parámetro : c
 </code> </code>
 +
 +** Desactivar / Reactivar la salida estándar y/o de errores en scripts de forma global **
 +
 +<code bash># Redireccionar la salida estándar a /dev/null.
 +exec 1>/dev/null
 +# Redireccionar la salida de errores a /dev/null.
 +exec 1>/dev/null
 +# Redireccionar la salida estándar y de errores a /dev/null.
 +exec 1>/dev/null 2>&
 +
 +# Restaurar la entrada y salida estándar a su comportamiento normal.
 +exec >/dev/tty 2>&1</code>
 +
  
 **Tuberías y el uso de redirecciones**: En algunos casos, el primer comando muestra el resultado deseado como "salida de errores" y las tuberías de manera predeterminada solo redirigen stdin (entrada estándar). Por lo tanto en algunas ocasiones es necesario usar las tuberías de la siguiente manera en combinación con las redirecciones para que todo funcione correctamente. **Tuberías y el uso de redirecciones**: En algunos casos, el primer comando muestra el resultado deseado como "salida de errores" y las tuberías de manera predeterminada solo redirigen stdin (entrada estándar). Por lo tanto en algunas ocasiones es necesario usar las tuberías de la siguiente manera en combinación con las redirecciones para que todo funcione correctamente.
fore_background_desvincular_procesos_de_la_shell.txt · Last modified: 2024/02/13 17:16 by busindre