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

Jak wykonać polecenie na ekranie i odłączyć się?

Jak mogę sprawić, żeby screen wykonał polecenie, a następnie odłączył się (to znaczy, automatycznie w pojedynczym skrypcie bez dalszego wprowadzania danych poza początkowym uruchomieniem skryptu)? np. uruchamiam myscript.sh i on automatycznie uruchamia sesję screen, wykonuje polecenie, a następnie odłącza się.

Odpowiedzi (5)

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

To jest łatwe:

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

Aby uruchomić pojedynczą komendę na ekranie i odłączyć, możesz spróbować:

screen -dm sleep 10

Aby uruchomić wiele komend, spróbuj:

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

Należy pamiętać, że gdy program się kończy, screen (domyślnie) zabija okno, które go zawierało.

Jeśli nie chcesz, aby twoja sesja została zabita po zakończeniu skryptu, dodaj exec sh na końcu, np:

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

Aby wyświetlić listę wszystkich twoich sesji, spróbuj:

screen -list

Powiązane: Start Unix screen, Uruchom polecenie, Odłącz ](https://serverfault.com/questions/578608/start-unix-screen-run-command-detach).

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

Aby uruchomić nową sesję w tle o nazwie ‘sleepy’

screen -S sleepy -dm sleep 60

Aby zabić sesję ‘sleepy’

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

przytrafiło mi się to, gdy nacisnąłem control c (sig int), aby wyjść z mojego programu. to wychodzi ze wszystkich bashów. więc znalazłem to, aby złapać SIGINT. i zapobiec wyjściu z ostatniego basha. (trzeba wpisać exit, aby wyjść)

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"

Uważam, że użyteczne jest używanie crona do uruchamiania programów nodejs przy starcie systemu. i do uruchamiania ekranu przy starcie systemu. w cronie są specjalne zdarzenia składnia @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"