Wir haben einen lang laufenden Prozess auf einem Remote-Server, der von Zeit zu Zeit manuell gestartet wird. Leider sterben Internetverbindungen, Kernel-Panik und eine ganze Reihe anderer Herausforderungen können durch die SSH-Sitzung auftreten, die zum Verbinden und Starten des Jobs verwendet wird.
Der Bildschirm scheint ein perfekter Weg zu sein, um sicherzustellen, dass der Prozess nicht unterbrochen wird. Es ist jedoch ein Problem, sich darauf zu verlassen, dass sich eine Person immer daran erinnert, den Bildschirm zu starten und dann das Skript auszuführen, um den Prozess zu starten. Gibt es eine Möglichkeit, anhand des Skripts zu überprüfen, ob das Skript über den Bildschirm aufgerufen wird? Wenn dies der Fall ist, wird der Vorgang fortgesetzt, andernfalls wird das Skript mit einer Meldung beendet, in der der Benutzer angewiesen wird, zuerst den Bildschirm auszuführen.
quelle
Antworten:
Dafür gibt es eine Umgebungsvariable. Wenn es innerhalb des Bildschirms ausgeführt wird,
$TERM
wirdscreen
. So einfach ist das; mach einfach ein wenn drauf. Zum Beispiel,wird im Bildschirm eine Echo-Leiste anzeigen; foo sonst.
quelle
screen-256color
wenn der Benutzer die 256-Farben-Unterstützung konfiguriert hat.Warum nicht das Skript mit 'nohup' ausführen, während Sie mit dem Bildschirm arbeiten? Dadurch wird auch sichergestellt, dass es weiterhin ausgeführt wird, wenn Sie die Verbindung trennen.
Die Ausgabe erfolgt standardmäßig in einer Datei, sodass Sie bei Bedarf andere Tools zum Überwachen der Skriptausgabe verwenden können.
quelle