Я пишу сценарий оболочки Linux, в котором мне нужно запустить новый сеанс экрана, запустить сервер node.js на экране, а затем отсоединиться от экрана, чтобы мой сервер работал в фоновом режиме.
Прямо сейчас это команды, которые я запускаю вручную, чтобы сделать это:
screen
node server.js
[detach screen]
Однако мне нужен способ автоматизировать это с помощью сценария, и если я просто использую приведенные выше команды в сценарии оболочки, он создает экран и застревает там. Как я могу передать команду «node server.js» в команду экрана?
РЕДАКТИРОВАТЬ:
Основываясь на предложенном ответе, у меня есть работающий скрипт, за исключением того, что мне нужно вручную создать экран и отсоединиться от него, прежде чем запускать его. Я попытался добавить screen -d -m
в качестве первой строки для создания отдельного экрана, но скрипт зависает после этой строки.
tempfile=$(mktemp)
indices=`tail -1 debug.log`
cat > $tempfile <<EOF
node server $indices
EOF
screen -X readbuf $tempfile
screen -X paste .
rm -f $tempfile
Как я могу создать и отсоединить экран со скриптом?
Это тоже не сработало: screen screen -d