Запустить сеанс экрана и запустить скрипт без привязки к нему?

Я пытаюсь написать сценарий:

Запустить новый сеанс screen Запустить некоторую программу или скрипт в этом новом сеансе экрана Отсоединить от сеанса экрана, в то время как программа с шага 2 может все еще там работает. Если программа с шага 2 заканчивается, немедленно или позже, сеанс экрана должен оставаться включенным (отсоединенным).

Я пробовал всевозможные комбинации с screen -X program или screen -S somename, а затем program, а затем screen -D, в сочетании с параметрами -d или -m, которые я нахожу в связанных вопросах и ответы, но ничего не работает.

Самое близкое, что я мог получить, это:

screen -S MySessionName -d -m myprogram

Это запускает новый сеанс экрана в backgroun, запуская myprogram. За исключением того, что myprogram заканчивается (иногда мгновенно), сеанс экрана заканчивается, тогда как я хочу, чтобы он работал.

0
задан 4 December 2017 в 22:46

3 ответа

Метод 1

Я создал демо-версию, описанную здесь на моей машине. Я также столкнулся с проблемой, о которой вы сообщили. Но добавление небольшой строки из script решило мою проблему.

Я добавил следующую строку в конце myprogram

exec $SHELL

После завершения вашего скрипта Bash процесс заменит себя новым вызовом самого себя.

Метод 1

Или вы можете попробовать следующий метод, в котором мы начинаем сначала detached screen и отправьте команду на этот экран с помощью stuff

Для этого сначала вам нужно запустить отдельный экран.

screen -dmS MySessionName

И затем отправить сценарий на этот экран. [!d9 ]

screen -S MySessionName -p 0 -X stuff 'myprogram\n'

Это также сработало для меня.

3
ответ дан 22 May 2018 в 15:40

способ 1

я создал демо-установки вы описан здесь, в моей машине. Я тоже столкнулась с вопросом вы сообщили. Но добавив небольшой линии script решена моя проблема.

я добавил следующую строку в конце myprogram

exec $SHELL

после того, как ваш сценарий будет завершен, процесс Баш будет заменить себя новый вызов себе.

способ 1

, или вы можете попробовать следующий метод, в котором мы начинаем detached screen первый и отправить команду на экране с помощью stuff

для этого сначала нужно запустить отдельный экран.

screen -dmS MySessionName

, а затем отправить сценарий на экране.

screen -S MySessionName -p 0 -X stuff 'myprogram\n'

это также работает для меня.

3
ответ дан 18 July 2018 в 01:53

Метод 1

Я создал демо-версию, описанную здесь на моей машине. Я также столкнулся с проблемой, о которой вы сообщили. Но добавление небольшой строки из script решило мою проблему.

Я добавил следующую строку в конце myprogram

exec $SHELL

После завершения вашего скрипта Bash процесс заменит себя новым вызовом самого себя.

Метод 1

Или вы можете попробовать следующий метод, в котором мы начинаем сначала detached screen и отправьте команду на этот экран с помощью stuff

Для этого сначала вам нужно запустить отдельный экран.

screen -dmS MySessionName

И затем отправить сценарий на этот экран.

screen -S MySessionName -p 0 -X stuff 'myprogram\n'

Это также сработало для меня.

3
ответ дан 24 July 2018 в 17:28

Другие вопросы по тегам:

Похожие вопросы: