ver usuario todos terminar sleeping procesos los ejecucion corriendo comando linux logging command-line-interface

linux - usuario - Adjuntar a una salida de procesos para ver



ver procesos en ubuntu (5)

¿Cómo podría ''adjuntar'' una consola / terminal-vista a una salida de aplicaciones para que pueda ver lo que puede estar diciendo?

Sobre esta pregunta, sé que es posible capturar la salida, incluso cuando no se inició el comando sceen antes de iniciar el proceso.

Aunque nunca lo intenté, encontré un artículo interesante que explica cómo usar GDB (y sin reiniciar el proceso).

redirecting-output-from-a-running-process

Básicamente:

  1. Compruebe la lista de archivos abiertos para su proceso, gracias a / proc / xxx / fd
  2. Adjunte su proceso con GDB
  3. Mientras está en pausa, cierre el archivo que le interese, llamando a la función close () (puede hacer cualquier función de su proceso en GDB. Sospecho que necesita símbolos de depuración en su proceso ...)
  4. Abra el nuevo archivo que llama a la función create () o open (). (Eche un vistazo a los comentarios al final, verá que la gente sugiere usar dup2 () para asegurarse de que se use el mismo identificador)
  5. Separe el proceso y deje que se ejecute.

Por cierto, si está ejecutando un sistema operativo Linux en la caja i386, los comentarios están hablando de una mejor herramienta para redirigir el resultado a una nueva consola: ''retty'' . Si es así, considere su uso.

¿Cómo podría ''adjuntar'' una consola / terminal-vista a una salida de aplicaciones para que pueda ver lo que puede estar diciendo?

¿Cómo me desconectaría de una salida de aplicaciones sin matar la aplicación?

Normalmente, si enciendes una aplicación hablante usando la línea de comando, puedes ver todo tipo de resultados maravillosos. Sin embargo, digamos que tengo una programación particularmente parlanchín que funciona como KINO y quiero ver su salida en cualquier momento sin reiniciarla a través de la línea de comando. No puedo, al menos no sé cómo.


Estaba buscando exactamente lo mismo y descubrí que puedes hacer:

strace -ewrite -p $PID

no es exactamente lo que necesitabas, pero está bastante cerca

Probé la salida de redirigir pero eso no funcionó para mí, maby porque el proceso estaba escribiendo en un socket, no sé


Hay algunas opciones aquí. Una es redirigir la salida del comando a un archivo, y luego usar ''cola'' para ver las nuevas líneas que se agregan a ese archivo en tiempo real.

Otra opción es ejecutar su programa dentro de ''pantalla'', que es una especie de aplicación de terminal basada en texto. Las sesiones de pantalla se pueden adjuntar y separar, pero están destinadas solo para ser utilizadas por el mismo usuario, por lo que si desea compartirlas entre usuarios, es un gran dolor en el culo.


Quería ver a distancia un proceso de actualización de yum que se había ejecutado localmente, por lo que si bien probablemente había formas más eficientes de hacerlo, esto es lo que hice:

ver cat / dev / vcsa1

Obviamente, querrás usar vcsa2, vcsa3, etc., dependiendo de qué terminal se esté usando.

siempre que mi ventana de terminal fuera del mismo ancho que la terminal en la que se estaba ejecutando el comando, podría ver una instantánea de su salida actual cada 2 segundos. Los otros comandos recomendados en otros lugares no funcionaron particularmente bien para mi situación, pero ese fue el truco.


Creo que aquí tengo una solución más simple, solo busque un directorio cuyo nombre corresponda al PID que está buscando, bajo el sistema de pseudoarchivos accesible en la ruta /proc . Entonces, si tiene un programa en ejecución, cuyo ID es 1199, cd en él:

$ cd /proc/1199

Luego busque el directorio fd debajo

$ cd fd

Este directorio fd contiene los objetos descriptores de archivos que usa su programa (0: stdin, 1: stdout, 2: stderr) y solo el que necesita - en este caso, stdout):

$ tail -f 1