GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo cambiar la redirección de salida de un proceso en ejecución?

Sé cómo redirigir la salida y cómo suprimirlos en bash. Ahora, supongamos que accidentalmente olvidé agregar la parte de redirección de salida al comando (por ejemplo, 2>&1 o > /tmp/mystdout ) y mi proceso en segundo plano ya se está ejecutando durante un tiempo, ¿puedo cambiar a donde stdout y stderr se les escribe? Realmente me gustaría no matar y reiniciar la aplicación.

Para ser más específico, como lo solicitó Gilles en su comentario, me gustaría jugar con esto en estos escenarios en específico:

  • archivo de salida incorrecto
  • olvidé redirigir stderr a stdout

o una combinación de ambos

P.ej. Tengo Apache ejecutándose y puedo ver los descriptores de archivo:

/proc/8019/fd/0 -> /dev/null
/proc/8019/fd/1 -> /dev/null
/proc/8019/fd/2 -> /var/log/apache2/error.log

Respuesta aceptada:

Puedes hacerlo usando redirección (https://github.com/jerome-pouiller/reredirect/).

reredirect -m /dev/null <PID>

Puede restaurar la salida inicial de su proceso más tarde usando algo como:

reredirect -N -O <M> -E <N> <PID>

(<M> y <N> son proporcionados por el lanzamiento anterior de redirección).

redirigir README también explica cómo redirigir a otro comando o redirigir solo a stdout o stderr.


Linux
  1. ¿Cómo ver la salida de un proceso en ejecución en otra sesión de Bash?

  2. Linux:¿cómo obtener la hora del reloj de pared de un proceso en ejecución?

  3. ¿Cómo recordar cómo usar la redirección?

  4. ¿Cómo cambiar el nombre de host?

  5. Cómo cambiar el nombre de host en Ubuntu

Cómo enumerar los procesos en ejecución en Linux

Cómo cambiar la prioridad de un proceso en Linux

Cómo cambiar el color de salida de 'Echo' en Linux

¿Cómo redirigir la salida de system() a un archivo?

¿Cómo redirigir la salida del comando de tiempo a un archivo en Linux?

¿Cómo obtener solo todos los ID de proceso en ejecución?