Ich versuche herauszufinden, wie man ein Skript schreibt, das Programme in GNU Screen-Sitzungen beim Systemstart startet. Ich versuche das:
#!/bin/bash
screen -S test -d -m -X $HOME/folder/folder/.program \
screen -S test2 -d -m -X $HOME/folder/folder/.program2 \
Aber der Befehl kann nicht ausgeführt werden, da die Sitzung bereits getrennt ist. Das einzige, was ich brauche, ist Befehl in Bildschirmsitzung ausführen und diese Sitzung sofort trennen.
Danke für die Antworten, aber jetzt stand ich vor einem anderen Problem. Das Skript funktioniert nicht mehr, nachdem ich einige Variablen für mein "Programm und Programm2" eingegeben habe. Etwas wie das:
#!/bin/bash
screen -S test -d -m $HOME/folder/folder/.program -f config.cfg
Aus irgendeinem Grund wurde "-f config.cfg" ignoriert. Ich werde auch versucht, Befehl zu veranschlagen und helfe auch nicht.
scripts
gnu-screen
TbMa
quelle
quelle
-X
Option?Antworten:
Wollten Sie wirklich das
\
am Ende der Zeile setzen? Wenn nicht, entfernen Sie diese - sie entziehen sich dem folgenden Zeichen.Auch das Fallenlassen
-X
für mich hilft die Setup - Arbeit, zum Beispiel:scheitert
No screen session found
jedoch mit:funktioniert gut. Als solches vermute ich, dass das folgende für Sie arbeiten wird:
Denken Sie daran, dass $ HOME nicht dasselbe ist, wenn Sie es beim Booten ausführen, nachdem Sie sich als ein bestimmter Benutzer angemeldet haben. Wenn Sie es als ein bestimmter Benutzer ausführen müssen, müssen Sie das Gleiche verwenden
su
, um es als dieser Benutzer auszuführen. Wenn Sie den vollständigen Pfad angeben, werden alle Unklarheiten beseitigt:Oder Sie würden das gesamte obige Skript als aufrufen
su - username /path/to/your/script
.quelle
screen -S test -d -m $HOME/folder/folder/.program
fast genau das, wonach ich suche, außer wenn Ordner / .programm beendet ist, wird die Bildschirmsitzung automatisch geschlossen. Gibt es eine Möglichkeit, die Bildschirmsitzung (Shell) auch nach Abschluss des Programms weiterlaufen zu lassen? Vielleicht anstatt das Programm exklusiv auszuführen, starten Sie eine Shell, die das Programm startet und dann zur Shell-Eingabeaufforderung zurückkehrt, oder so?Wie Cry Havok bereits erwähnt hat, können Sie das Programm direkt in der Befehlszeile platzieren.
Wenn Sie die Option -X wirklich verwenden müssen, müssen Sie a) den Befehl 'screen' angeben und b) die Sitzung muss vorher vorhanden sein.
quelle
sleep
Befehle, um dem Bildschirm Zeit zum Starten der Sitzung zu geben, bevor Sie den Befehl senden.