Как создать сеанс экрана при запуске с помощью команды, которая не заканчивается после ее завершения

Я хочу отредактировать свой файл rc.local , чтобы запустить несколько сеансов сервера, каждый на своем собственном экране GNU. Однако всякий раз, когда я останавливаю сервер, экран закрывается.

В настоящее время у меня есть:

screen -dmS test ~/tmp/runserver.sh

с этим внутри runserver.sh :

node ~/dev/mouser/app.js

Как получить экран, чтобы остаться в живых после завершения переданной команды или сценария?

4
задан 11 March 2015 в 14:44

1 ответ

Два пути. Либо вызовите оболочку для запуска сценария, которая затем заменяет себя (используя встроенную функцию exec) на интерактивную оболочку после завершения сценария

screen -dmS test bash -c '~/tmp/runserver.sh; exec bash'

, либо оставьте текущую экранную команду и поместите команду exec bash в ваш скрипт runserver.sh.

#!/bin/bash
node ~/dev/mouser/app.js
exec bash

(Кстати, нет смысла иметь расширение для скрипта. Это просто даст вам головную боль зависимости, если вы переписываете ее на другом языке. Если вы посмотрите в / bin и / usr / bin вы найдете множество скриптов sh, bash и python, ни один из которых не имеет расширения .sh, .bash или .py)

0
ответ дан 11 March 2015 в 14:44

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

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