GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo adjunto una terminal a un proceso desconectado?

Sí, lo es. Primero, crea una tubería:mkfifo /tmp/fifo .Utilice gdb para adjuntar al proceso:gdb -p PID

Luego cierre stdin:call close (0); y ábrelo de nuevo:call open ("/tmp/fifo", 0600)

Finalmente, escribe (desde una terminal diferente, ya que gdb probablemente se cuelgue):

echo blah > /tmp/fifo


Cuando ya no se puede acceder al terminal original...

reptyr podría ser lo que desea, consulte https://serverfault.com/a/284795/187998

Cita de allí:

Eche un vistazo a reptyr, que hace exactamente eso. La página de github tiene toda la información.

reptyr - Una herramienta para "repetir" programas.

reptyr es una utilidad para tomar un programa en ejecución existente y adjuntarlo a una nueva terminal. ¿Comenzó un proceso de ejecución continua a través de ssh, pero tiene que irse y no quiere interrumpirlo? Simplemente inicie una pantalla, use el nombre de usuario para tomarla y luego elimine la sesión y diríjase a casa.

USO

PID de reptyr

"reptyr PID" tomará el proceso con id PID y lo adjuntará a su terminal actual.

Después de adjuntar, el proceso tomará entradas y escribirá salidas en la nueva terminal, incluidos ^C y ^Z. (Desafortunadamente, si lo guarda en segundo plano, aún tendrá que ejecutar "bg" o "fg" en la terminal anterior. Esto es probable imposible de arreglar de manera razonable sin parchear su caparazón.)


Estoy bastante seguro de que no puedes.

Comprueba usando ps x . Si un proceso tiene un ? como controlando tty , ya no puede enviarle entradas.

9942 ?        S      0:00 tail -F /var/log/messages
9947 pts/1    S      0:00 tail -F /var/log/messages

En este ejemplo, puede enviar la entrada a 9947 haciendo algo como echo "test" > /dev/pts/1 . El otro proceso (9942 ) no es accesible.

La próxima vez, podría usar screen o tmux para evitar esta situación.


Linux
  1. Cómo matar un proceso zombie en Linux

  2. ¿Cómo ejecutar un comando que sobrevivirá al cierre de la terminal?

  3. Cómo ejecutar el proceso Rsync en segundo plano

  4. ¿Cómo obtener el ID de proceso del proceso en segundo plano?

  5. ¿Cómo identificar el puerto de un proceso?

Cómo usar la terminal de Linux en Android

Cómo usar Instagram en la terminal

Cómo abrir una ventana de terminal de Linux

Cómo trabajar con procesos en primer plano y en segundo plano en Linux

Cómo MATAR un proceso en Linux

Cómo abrir un PDF en la terminal de Linux