Запустить отсоединенный скрипт в Linux после выхода из родительского домена .net? - PullRequest
0 голосов
/ 11 февраля 2019

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

Это можно легко сделать в Linux с помощью nohup и &.

Это можно сделать в Windows .net, написав заглушку .exe или скрипт, который запускает постоянный скрипт, затемостанавливает своего родителя.В этом случае заглушка и родительский элемент умирают, но сценарий, запущенный подпрограммой, продолжается.

Однако в .net в Linux это, похоже, не работает.Мое приложение .net может выдавать команду оболочки с nohup, но под-скрипт, который также запускается с nohup и &, и который является предполагаемой фактической работой, не запускается.

заглушка update1.sh, запускается из приложения .net с

nohup /usr/bin/myservice/update1.sh update.rpm &

Содержит:

trap '' SIGTERM
trap '' SIGINT
nohup /usr/bin/myservice/update2.sh $1 &

update2.sh содержит

trap '' SIGTERM
trap '' SIGINT
sudo systemctl stop myservice
yum -y localinstall $1
sudo systemctl start myservice

(ловушкипредназначены для предотвращения остановки родительского процесса от остановки ребенка)

Если я запускаю update1.sh из командной строки, в то время как su'd для учетной записи пользователя службы, с nohup и &, он работает нормально.Проблема возникает, когда я запускаю заглушку из приложения .net с той же командной строкой.Похоже, это связано с работой в среде .net управляемого кода.

Есть предложения?

Цель - взять приложение .net, работающее на автоматическом сервере Centos, и позволить ему обновлять и перезапускать себя, используя 'yum -y localinstall' и локальный RPM-файл (нет, он не может идтив удаленный репозиторий).

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