Вопрос: Как создать сеанс сеанса при запуске с командой, которая не заканчивается, когда команда завершается


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

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

screen -dmS test ~/tmp/runserver.sh

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

node ~/dev/mouser/app.js

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


4
2018-02-06 06:44


Источник




Ответы:


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

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

или сохранить текущую команду экрана и поместить exec bash в сценарий runerver.sh.

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

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


4
2018-02-17 21:01