GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie verbinde ich ein Terminal mit einem getrennten Prozess?

Ja, so ist es. Erstellen Sie zuerst eine Pipe:mkfifo /tmp/fifo .Verwenden Sie gdb, um sich an den Prozess anzuhängen:gdb -p PID

Schließen Sie dann stdin:call close (0); und wieder öffnen:call open ("/tmp/fifo", 0600)

Schreiben Sie schließlich weg (von einem anderen Terminal, da gdb wahrscheinlich hängen bleibt):

echo blah > /tmp/fifo


Wenn das ursprüngliche Terminal nicht mehr zugänglich ist...

reptyr könnte das sein, was Sie wollen, siehe https://serverfault.com/a/284795/187998

Zitat von dort:

Schauen Sie sich reptyr an, das genau das tut. Die Github-Seite enthält alle Informationen.

reptyr - Ein Werkzeug zum "Wiederholen" von Programmen.

reptyr ist ein Dienstprogramm, mit dem Sie ein vorhandenes laufendes Programm an ein neues Terminal anhängen können. Mitlaufenden Prozess über ssh gestartet, aber verlassen müssen und nicht unterbrechen wollen? Starten Sie einfach einen Bildschirm, usereptyr, um ihn abzurufen, beenden Sie dann die SSH-Sitzung und gehen Sie nach Hause.

VERWENDUNG

reptyr PID

"reptyr PID" greift den Prozess mit der ID PID und hängt ihn an Ihr aktuelles Terminal an.

Nach dem Anhängen nimmt der Prozess Eingaben vom neuen Terminal entgegen und schreibt Ausgaben in das neue Terminal, einschließlich ^C und ^Z. (Wenn Sie es im Hintergrund ausführen, müssen Sie leider immer noch "bg" oder "fg" im alten Terminal ausführen. Dies ist wahrscheinlich nicht auf vernünftige Weise zu beheben, ohne die Shell zu patchen.)


Ich bin mir ziemlich sicher, dass Sie das nicht können.

Prüfen Sie mit ps x . Wenn ein Prozess einen ? hat als kontrollierendes tty , Sie können keine Eingaben mehr daran senden.

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

In diesem Beispiel können Sie Eingaben an 9947 senden etwas wie echo "test" > /dev/pts/1 tun . Der andere Prozess (9942 ) ist nicht erreichbar.

Beim nächsten Mal könnten Sie screen oder tmux verwenden, um diese Situation zu vermeiden.


Linux
  1. So installieren Sie vtop unter Linux

  2. Wie leitet man Befehle an ein beliebiges Terminal weiter?

  3. So führen Sie den Rsync-Prozess im Hintergrund aus

  4. Wie überprüfe ich HZ im Terminal?

  5. Wie kann man eine SSH-Sitzung trennen, ohne einen laufenden Prozess zu beenden?

So verwenden Sie das Linux-Terminal in Android

So verwenden Sie Instagram im Terminal

So öffnen Sie ein Linux-Terminalfenster

So arbeiten Sie mit Vordergrund- und Hintergrundprozessen unter Linux

Wie man einen Prozess unter Linux beendet

So öffnen Sie eine PDF-Datei im Linux-Terminal