На этот вопрос уже есть ответ здесь:
Я уверен, что это действительно глупый вопрос и он, вероятно, уже был задан десятки раз на этом сайте, и я просто не знаю, какие ключевые слова искать. Я все еще очень новичок в управлении сервером и вообще в командной строке, но это то, что я давно хотел попробовать.
Сейчас у меня Ubuntu Server (без графического интерфейса), на котором работает веб-сервер Node.js.
Как я могу сохранить Node запущенным, выполняя другие команды в командной строке?
Например:
node /var/www/my_app.js
Эта команда не позволяет мне запускать другие команды, пока я не завершу ее с помощью Ctrl + C
. Но что если я хочу выполнить команду redis-cli
, оставив Node запущенным в фоновом режиме? Другими словами:
Я не знаю, имеет ли смысл (2) для команды node
, но, например, если я запустил nodemon
вместо этого, я могу выполнить команду rs
(перезапуск), пока nodemon
запущен.
Спасибо, и прошу прощения, если это дубликат и/или действительно очевидный вопрос.
Предложенные (setsid, и др.) являются большими, если бы Вы просто исчерпываете что-то и не заботитесь о его долговечности, но в производстве Вы использовали бы надлежащую систему демона, чтобы контролировать и повторно породить серверный процесс. Ubuntu поставлется с Выскочкой, таким образом, я посмотрел бы на запись Новомодного сценария.
Сохраняют что-то вроде этого, чтобы где-нибудь любить /etc/init/mynodeapp.conf
:
description "My node.js app"
start on startup
stop on shutdown
respawn
exec sudo -u USER /usr/bin/node /var/www/my_app.js
Замена USER
в exec
строка с любым пользователем Вы хотите работать и удостовериться путь к node
, двоичный файл полон и корректен (which node
, поможет подтвердить). При использовании локально установленной версии удостоверьтесь, что она указывает там.
, Как только это в порядке, sudo start mynodeapp
, запустится, это, sudo stop mynodeapp
остановит его, и различные другие новомодные команды (restart
, status
, и т.д.) сделают то, что они разработаны, чтобы сделать. Если Вы не хотите, чтобы он запустился на начальной загрузке, просто прокомментируйте строку запуска с #
.
Это - то, как я сделал бы это в производстве.... Вы упоминаете, что желали "возвратиться к контексту Узла"... Это немного более твердо. Выскочка и даже другие методы перепорождения процесса все отсоединение Вы от процесса. Обычно нет никакого возвращения к освещенному фейерверку.
, Если у Вас есть продолжающийся процесс, к которому необходимо склоняться, это - вероятно, терминальный сеанс, Вы хотите посмотреть на изменение. Если бы мне действительно было нужно в том, что Вы предлагаете, я начал бы смотреть screen
. Это позволяет Вам иметь несколько зависающих терминалов, которые можно отсоединить и повторно прикрепить от и до соответственно.
Это не простое приложение ведущему устройству, но тому, в которое могло бы стоить вырыть: