Ich möchte eine Instanz von GNU beenden, screen
während der darin ausgeführte Prozess erhalten bleibt.
Also öffnete ich mein reguläres Terminal-Emulator-Programm und führte den Bildschirm aus. Dann habe ich diese Instanz von screen
ausgeführt ./script_x.sh
. Jetzt, aus welchem Grund auch immer, möchte ich aufhören, habe screen
aber script_x.sh
noch nicht seine Aufgabe erfüllt und bin nicht bereit, meinen Fortschritt einzubüßen.
Kann ich den aktiven Prozess am Leben erhalten, um ihn in meinem regulären Terminalemulator weiter zu bearbeiten?
screen
Sitzung.screen
. Ich wollte aufhören zu benutzenscreen
. Ich wollte das Programm, das im Inneren lief, nicht stoppenscreen
. Das ist es. Ich weiß nicht, wie ich die Situation klären oder einfacher ausdrücken soll.Antworten:
TLDR: Praktische Antwort: Nein.
Längere Antwort:
Theoretisch kannst du. Wenn Sie so etwas wie
nohup myprog &
vom Bildschirm aus gestartet haben, läuft es weiter. Es ignoriert ein Aufhängesignal und hat keine Eingabe, aber theoretisch können Sie damit weiterarbeiten.In der Praxis ist dies nicht der Fall. Wenn Sie also keinen Debugger an den laufenden Prozess anhängen und seine Datei-Handles neu schreiben möchten und sicherstellen, dass der Prozess -1-Signale verarbeitet, wenn Sie den Bildschirm schließen ... lautet die Antwort nein.
Wenn Sie dazu bereit sind, habe ich zu Hause ein Lesezeichen, das auf [SU] verweist, wo jemand genau das getan hat . Gespeichert für Großartigkeit, nicht weil es einfach und trivial zu tun ist.
quelle
disown
oder auf einer niedrigeren Ebene) festzulegen, damit keineSIGHUP
gesendet werden, wenn der übergeordnete Prozess stirbt. Das erneute Verbinden von I / O ist eine andere Sache - hier kommt der Debugger insnohup
wenn Sie in einem Job - Control - Shell sind (wiebash
,ksh
,csh
,zsh
,ash
, etc.). Wenn Sie immer noch eine Nicht-Job-Kontroll-Shell wie Bourne verwenden, ist essh
möglicherweise an der Zeit, ein Upgrade durchzuführen.Sie können versuchen,
reptyr
eine bereits laufende Anwendung mit einem anderen Terminal erneut zu verbinden. Es gibt jedoch einige Probleme beim Senden in den Hintergrund.Ich habe es gerade getestet (
htop
drinnen anfangenscreen
,reptyr
es zu einem anderen Terminal bringen, tötenscreen
) und es schien in Ordnung zu funktionieren. Trotzdem ist es eine wirklich hackige Lösung, also keine Garantie.quelle
Ja (wenn "Töten" nicht wirklich tötet), ist das eigentlich genau das, wofür der Bildschirm ist. Sie sollten das Handbuch überprüfen und versuchen, welches davon Ihren Anforderungen entspricht:
Dann benötigen Sie die Befehlszeilenoptionen -D / -d -R / -r des Bildschirms, abhängig von Ihrer Wahl.
quelle