git pu sh для удаленного не завершается - PullRequest
0 голосов
/ 04 мая 2020

Я хочу сделать локальные изменения sh на работающем сервере, но команда 'git -pu sh' не завершается после выполнения своей 'работы. Программа должна быть остановлена ​​вручную (я бы хотел, чтобы она закрылась сама).

Я пытаюсь использовать ловушку git post-receive, чтобы обновить работающий сервер и перезапустить два демона. Проблема в том, что npm start (последняя команда) продолжает отправлять свой текстовый вывод в 'git -pu sh', даже если 'npm start' был запущен как фоновое задание. Я пытался перенаправить stdin и sterr в / dev / null, но это не дало никакого результата.

npm start запускает веб-приложение реагирования

#!/bin/sh
killall node
GIT_WORK_TREE=/root/danskesn git checkout -f
server="node /root/danskesn/server/server.js"
webapp="npm start 1>/dev/null 2>&1 &"

nohup $server &
nohup $webapp &

Ответы [ 2 ]

0 голосов
/ 04 мая 2020

Обратите внимание на перенаправления в этой строке:

webapp="npm start 1>/dev/null 2>&1 &"

Теперь рассмотрим два фоновых процесса:

nohup $server &
nohup $webapp &

One из них - тот, который использует $webapp - имеет встроенные перенаправления для stdout и stderr. Но что для $server установлено?

server="node /root/danskesn/server/server.js"

Упражнение: есть ли здесь перенаправления? Если так, найдите их. (Там может быть , внутри node или /root/danskesn/server/server.js. Хотя я не верю, что они есть.)

Если есть , то нет перенаправления, стандартный вывод и стандартный вывод ошибок из этой команды nohup $server & по-прежнему подключены к команде git push в вашей сети. Ваш git push будет ожидать любого вывода и скопировать его в ваш сеанс оболочки с префиксом слова remote:. Ваш git push прекратит работу только тогда, когда больше нет доступных выходных данных, т. Е. Когда nohup $server & закроет свои выходные данные и потоки ошибок, вероятно, завершив полностью.

0 голосов
/ 04 мая 2020

Мое предположение заключается в том, что файлы, которые вы пытаетесь обновить, блокируются вашим активным процессом (реагирует на веб-приложение), и поэтому git pu sh не получает возможности разрешить должным образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...