GNU/Linux >> Linux Esercitazione >  >> Linux

Come collego un terminale a un processo distaccato?

Sì. Innanzitutto, crea una pipe:mkfifo /tmp/fifo .Usa gdb per collegarti al processo:gdb -p PID

Quindi chiudi stdin:call close (0); e aprilo di nuovo:call open ("/tmp/fifo", 0600)

Infine, scrivi (da un terminale diverso, poiché probabilmente gdb si bloccherà):

echo blah > /tmp/fifo


Quando il terminale originale non è più accessibile...

reptyr potrebbe essere quello che vuoi, vedi https://serverfault.com/a/284795/187998

Citazione da lì:

Dai un'occhiata a reptyr, che fa esattamente questo. La pagina github contiene tutte le informazioni.

reptyr - Uno strumento per "riscrivere" i programmi.

reptyr è un'utilità per prendere un programma in esecuzione esistente e collegarlo a un nuovo terminale. Hai avviato un lungo processo su ssh, ma devi andartene e non vuoi interromperlo? Basta avviare una schermata, usereptyr per prenderlo, quindi terminare la sessione di ssh e tornare a casa.

UTILIZZO

reptyr PID

"reptyr PID" prenderà il processo con id PID e lo allegherà al tuo attuale terminale.

Dopo il collegamento, il processo prenderà l'input e scriverà l'output sul nuovo terminale, inclusi ^C e ^Z. (Sfortunatamente, se lo fai in background, dovrai comunque eseguire "bg" o "fg" nel vecchio terminale. impossibile da correggere in modo ragionevole senza applicare patch alla tua shell.)


Sono abbastanza sicuro che non puoi.

Controlla usando ps x . Se un processo ha un ? come controllo di tty , non puoi più inviargli input.

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

In questo esempio, puoi inviare input a 9947 facendo qualcosa come echo "test" > /dev/pts/1 . L'altro processo (9942 ) non è raggiungibile.

La prossima volta puoi usare screen o tmux per evitare questa situazione.


Linux
  1. Come inviare comandi a qualsiasi terminale?

  2. Come ottenere l'ID processo del processo in background?

  3. Come uccidere il processo di zombi

  4. Come staccare la sessione ssh senza uccidere un processo in esecuzione?

  5. Come leggere le variabili d'ambiente di un processo

Come utilizzare il terminale Linux in Android

Come utilizzare Instagram nel terminale

Come aprire una finestra di un terminale Linux

Come lavorare con il processo in primo piano e in background in Linux

Come KILL un processo su Linux

Come aprire un PDF in un terminale Linux