¿Cómo 'adjunto' una vista de consola / terminal a la salida de una aplicación para poder ver lo que puede estar diciendo?
¿Cómo puedo separarme de la salida de una aplicación sin matarla?
Normalmente, si inicia una aplicación habladora usando la línea de comandos, puede ver todo tipo de resultados maravillosos. Sin embargo, digamos que tengo una programación particularmente habladora en ejecución, como KINO, y quiero ver su salida en cualquier momento sin reiniciarla a través de la línea de comandos. No puedo; al menos no sé cómo.
linux
logging
command-line-interface
aggitan
fuente
fuente
Respuestas:
Hay algunas opciones aquí. Una es redirigir la salida del comando a un archivo y luego usar 'tail' para ver las nuevas líneas que se agregan a ese archivo en tiempo real.
Otra opción es iniciar su programa dentro de la "pantalla", que es una especie de aplicación de Terminal basada en texto. Las sesiones de pantalla se pueden adjuntar y desconectar, pero nominalmente solo están destinadas a ser utilizadas por el mismo usuario, por lo que si desea compartirlas entre usuarios, es un gran dolor de cabeza.
fuente
Creo que tengo una solución más sencilla aquí. Simplemente busque un directorio cuyo nombre corresponda al PID que está buscando, en el pseudo-sistema de archivos accesible en la
/proc
ruta. Entonces, si tiene un programa en ejecución, cuyo ID es 1199,cd
en él:Luego busque el
fd
directorio debajoEste
fd
directorio contiene los objetos descriptores de archivo que está usando su programa (0: stdin, 1: stdout, 2: stderr) y solotail -f
el que necesita, en este caso, stdout):fuente
tail
ya que en mi caso la salida se redirigió a otro proceso para la entrada, peromore
me mostró los datos actuales.more
está trabajando para mí. ubuntu 14.04 en un proceso de nodoEstaba buscando exactamente lo mismo y descubrí que puedes hacer:
No es exactamente lo que necesitabas, pero está bastante cerca.
Probé la salida de redireccionamiento, pero eso no funcionó para mí. Quizás porque el proceso estaba escribiendo en un socket, no lo sé.
fuente
Sobre esta pregunta, sé que es posible captar el resultado, incluso cuando no se inició el comando sceen antes de iniciar el processus.
Aunque nunca lo probé, encontré un artículo interesante que explica cómo usar GDB (y sin reiniciar el proceso).
redireccionar la salida de un proceso en ejecución
Básicamente:
Por cierto, si está ejecutando un sistema operativo Linux en la caja i386, los comentarios hablan de una mejor herramienta para redirigir la salida a una nueva consola: 'retty' . Si es así, considere su uso.
fuente
Para mí, esto funcionó:
Inicie sesión como propietario del proceso (incluso si
root
se le niega el permiso)Siga el descriptor de archivo como se menciona en muchas otras respuestas.
fuente
Quería ver de forma remota 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 hacer esto, esto es lo que hice:
Obviamente, querrá usar vcsa2, vcsa3, etc., dependiendo de qué terminal se esté usando.
Siempre que la ventana de mi terminal tuviera el mismo ancho que el terminal en el que se estaba ejecutando el comando, podía ver una instantánea de su salida actual cada dos segundos. Los otros comandos recomendados en otros lugares no funcionaron particularmente bien para mi situación, pero ese funcionó.
fuente