2012-07-29 02:04:52 +0000 2012-07-29 02:04:52 +0000
82
82

Wie führe ich einen Befehl im Bildschirm aus und trenne ihn?

Wie kann ich screen dazu bringen, einen Befehl auszuführen und dann zu trennen (d. h. automatisch in einem einzigen Skript ohne weitere Eingaben über den anfänglichen Start des Skripts hinaus)? z. B. führe ich myscript.sh aus und es startet automatisch eine screen-Sitzung, führt einen Befehl aus und trennt sich dann.

Antworten (5)

120
120
120
2012-07-29 02:20:11 +0000

Dies ist ein einfaches Beispiel:

screen -d -m yourcommand
49
49
49
2012-07-29 02:10:53 +0000

Um einen einzelnen Befehl im Bildschirm auszuführen und zu trennen, können Sie Folgendes versuchen:

screen -dm sleep 10

Um mehrere Befehle auszuführen, versuchen Sie:

screen -dm bash -c "sleep 10; myscript.sh"

Bitte beachten Sie, dass screen (standardmäßig) das Fenster, in dem ein Programm beendet wird, beendet.

Wenn Sie nicht wollen, dass Ihre Sitzung nach Beendigung des Skripts beendet wird, fügen Sie exec sh am Ende hinzu, z. B.:

screen -dm bash -c 'sleep 5; exec sh'

Um alle Ihre Sitzungen aufzulisten, versuchen Sie:

screen -list

Verwandte: Unix-Bildschirm starten, Befehl ausführen, Trennen .

16
16
16
2016-11-06 08:03:26 +0000

Um eine neue Sitzung im Hintergrund mit dem Namen ‘sleepy’ zu starten

screen -S sleepy -dm sleep 60

Um die Sitzung ‘sleepy’ zu beenden

screen -S sleepy -X quit
3
3
3
2018-03-14 05:40:50 +0000
screen -dmS screen_session_name bash -c 'echo "doing stuff"; exec bash'
0
0
0
2019-04-29 09:38:39 +0000

es passierte mir, als ich control c (sig int) drückte, um mein Programm zu beenden. es beendet alle bash. also fand ich dies, um SIGINT abzufangen. und den Ausgang der letzten bash zu verhindern. (man muss exit eingeben, um zu beenden)

screen -dmS "screenNameHere" bash -c "trap 'echo gotsigint' INT; cd /mydir ; my_command_here; bash"

example:

screen -dmS "status_updates" bash -c "trap 'echo gotsigint' INT; cd /opt/status_update ; forever index.js ; bash"

Ich finde es nützlich, cron zu benutzen, um nodejs-Programme beim Start auszuführen. und um den Bildschirm beim Booten zu starten. in cron gibt es spezielle Ereignisse Syntax @reboot event

to edit cron, execute:
crontab -e

then type
@reboot screen -dmS "screenNameHere" bash -c "trap 'echo gotsigint' INT; cd /mydir ; my_command_here; bash"