bash, nohup sh файл запускает узел, а узел зависает при выходе из системы? - PullRequest
0 голосов
/ 08 октября 2018

У меня есть скрипт bash test.sh

node ~/script1.js && \
node ~/script2.js && \
node ~/script3.js

Я запускаю скрипт bash

nohup ~/test.sh &

Затем я отключаюсь из-за потери соединения с сервером.Я ожидаю, что сценарии продолжатся, поскольку я использовал nohup, однако сценарий узла получает сигнал зависания.

Как правильно это сделать?

1 Ответ

0 голосов
/ 08 октября 2018

Если вы знаете, что собираетесь часто отключаться, лучше всего использовать screen или tmux или аналогичный, таким образом вы можете отключиться и подключиться позже, если это необходимо.Чтобы сделать это, если вы находитесь в интерактивной оболочке, вы можете просто, скажем, запустить screen, затем выполнить команду (без необходимости nohup или поместить ее в фоновом режиме), а затем набрать ctrl a затем d , чтобы отсоединиться от этого сеанса экрана.Затем вы можете выйти, и сеанс экрана и команда продолжатся.

С помощью screen вы можете затем повторно подключиться к сеансу, запустив screen -x, если есть только один screen сеанс, или вы можете датьАргумент -x указывает, к какому из них подключаться (вы можете дать ему имя при запуске screen с флагом -S, чтобы было легче запомнить, к какому из них повторно подключаться).Вы можете увидеть список текущих screen сеансов с screen -ls.

tmux также поддерживает все это, но я больше знаком с screen.

Если вы хотите сделать это с nohup, как ваша текущая попытка, вы также захотите disown команду, которая удалит это задание из вашей текущей оболочки.Если это единственный, вы можете disown -a до disown всех ваших работ.

...