Запустить отсоединенный скрипт в Linux после выхода из родительского домена.net?

Я хочу, чтобы моя служба.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 (нет, оно не может перейти в удаленный репозиторий).

0 ответов

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