Запуск экрана (команда unix) + запуск команды в 1 команде? - PullRequest
8 голосов
/ 05 января 2010

Интересно, как я могу запустить такую ​​команду, как:

while :; do ./myCommand; done;

Но вместо обычного

screen -S nameOfMyScreen

Тогда команда

while :; do ./myCommand; done;

Затем отсоедините экран

^a ^d (Control "a" the control "d"

Я бы хотел, чтобы оно началось и отсоединилось. Спасибо!

Ответы [ 2 ]

10 голосов
/ 05 января 2010
screen -d -m sh -c "while :; do ./myCommand; done;"

Пояснение:

  • -d -m запускает экран в отдельном режиме (создать сеанс, но не подключаться к нему)
  • sh -c commandline запускает оболочку, которая выполняет заданную командную строку (необходимо, так как вы используете встроенный while).
3 голосов
/ 05 января 2010

Начиная с screen -h, они выглядят полезными:

-dmS name     Start as daemon: Screen session in detached mode.
-X            Execute <cmd> as a screen command in the specified session.

Я сам этого не делал, но с этого бы я и начал.

Обновление:

В верхней части справки также написано

Use: path/to/screen [-opts] [cmd [args]]

, поэтому переключатель -X может выполнять команду screen вместо команды shell Вы можете просто ввести команду после -dmS <name> без какого-либо переключателя -X.

...