Как я могу сохранить что-то запущенным, но запустить другие команды терминала? [duplicate]

На этот вопрос уже есть ответ здесь:

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

Сейчас у меня Ubuntu Server (без графического интерфейса), на котором работает веб-сервер Node.js.

Как я могу сохранить Node запущенным, выполняя другие команды в командной строке?

Например:

node /var/www/my_app.js

Эта команда не позволяет мне запускать другие команды, пока я не завершу ее с помощью Ctrl + C. Но что если я хочу выполнить команду redis-cli, оставив Node запущенным в фоновом режиме? Другими словами:

  1. Как я могу выйти из контекста Node.js, не останавливая сервер Node? и
  2. После того, как я сделаю (1), как я могу вернуться в контекст Node?

Я не знаю, имеет ли смысл (2) для команды node, но, например, если я запустил nodemon вместо этого, я могу выполнить команду rs (перезапуск), пока nodemon запущен.

Спасибо, и прошу прощения, если это дубликат и/или действительно очевидный вопрос.

0
задан 10 May 2014 в 19:59

1 ответ

Предложенные (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. Это позволяет Вам иметь несколько зависающих терминалов, которые можно отсоединить и повторно прикрепить от и до соответственно.

Это не простое приложение ведущему устройству, но тому, в которое могло бы стоить вырыть:

3
ответ дан 7 October 2019 в 20:48

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

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