Wie verwende ich den Befehl "screen", wenn ich nicht weiß, von welchem ​​ps oder tty das Programm stammt?

7

Ich mache ein Python-Programm, das beim Booten gestartet wird. Ich möchte es, damit ich über den Befehl "screen" mit diesem Programm interagieren kann. Wenn ich dann über ein anderes tty, ssh oder etwas anderes mit dem Programm sprechen muss, kann ich das.

Ich behalte es gerne bei, damit ich den Bildschirm in meinem Terminal einfach mit einem Bash-Skript anhängen kann, anstatt nachsehen zu müssen, wo er sich befindet - da ich andere Personen (die das Terminal nicht verwenden) brauche, um darauf zugreifen zu können es.

user3346931
quelle
Abgesehen davon screengehören Sitzungen einem Benutzer, sodass Sie nicht "andere Personen ... haben können, um darauf zugreifen zu können". Wenn es beim Start screengestartet wird, gehört die Sitzung root, nicht Ihnen.
Roaima

Antworten:

1

Die sicherste Möglichkeit, eine Verbindung zur Sitzung auf dem richtigen Bildschirm herzustellen, besteht darin, dass das Python-Skript in eine bestimmte Datei schreibt, um zu melden, in welcher screenSitzung es ausgeführt wird. Stellen Sie sich dies als etwas Analoges zu einer PID-Datei vor, außer dass Sie die TTY und nicht die TTY melden die Prozess-ID. Andernfalls, wenn mehrere screenSitzungen vorhanden sind, ist ein Rätselraten erforderlich.

Führen Sie also beim Starten des Python-Prozesses Folgendes aus

echo "$STY" > /var/run/python-proc.screen

… Oder aus dem Python-Programm heraus,

with open('/var/run/python-proc.screen', 'w') as f:
    print(os.environ['STY'], file=f)

Anschließend können Benutzer durch Ausführen eine Verbindung herstellen

screen -x -m `cat /var/run/python-proc.screen`
200_Erfolg
quelle