Ich rufe den folgenden Befehl über Bash auf, aber es wird überhaupt keine Bildschirmsitzung erstellt:
screen -d -m time python3 myscript.py ; sleep 1
wenn ich screen -r
das mache, kommt die Meldung „Kein Bildschirm zum Fortsetzen“. Wenn ich es jedoch versuche:
screen -d -m time python3; sleep 1
Wenn Sie screen -r
dies tun, wird die Py-Konsole angezeigt.
Was mache ich falsch?
Antwort1
screen -d -m time python3 myscript.py
wird innerhalb einer Bildschirmsitzung ausgeführt python3 myscript.py
und dann beendet. Wenn Sie diese Bildschirmsitzung später nicht sehen, liegt das daran, dass das Skript bereits beendet wurde.
Offenbar haben Sie myscript.py
eine längere Laufzeit erwartet. Da muss etwas schiefgelaufen sein. Leiten Sie die Ausgabe (insbesondere Fehler) in eine Datei um, um zu sehen, was los ist. Oder halten Sie die Sitzung aufrecht, indem Sie ein anderes Programm ausführen.
screen -d -m time sh -c 'python3 myscript.py; echo $?; sleep 999999999'
Wenn das Skript nicht funktioniert, wenn Sie es direkt vom Bildschirm aus ausführen, aber funktioniert, wenn Sie es von einer interaktiven Shell aus ausführen, deutet dies höchstwahrscheinlich auf zwei Dinge hin:
myscript.py
hängt von einer Einstellung ab, wahrscheinlich einer Umgebungsvariable. Es ist nicht in sich geschlossen.- Sie setzen diese Einstellung an der falschen Stelle. Sie setzen wahrscheinlich eine Umgebungsvariable in
.bashrc
, die nur von interaktiven Shells gelesen wird. Setzen Sie.profile
stattdessen Umgebungsvariablen in ; diese Datei wird gelesen, wenn Sie sich anmelden.