我希望我的.Net Linux服务启动bash shell脚本,该脚本在继续的同时停止其父服务。
使用nohup和&可以轻松地在标准Linux上完成此操作。
这可以在Windows .net中完成,方法是编写一个存根.exe或脚本以启动持久性脚本,然后停止其父级。在这种情况下,存根和父项会死亡,但是子项启动的脚本会继续。
但是,在Linux上的.net中,这似乎不起作用。我的.net应用程序可以使用nohup发出shell命令,但是子脚本-也以nohup和&开头,并且假定是实际工作的子脚本无法运行。
存根update1.sh
是使用
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,同时使用nohup和&来启动服务用户帐户,那么它将正常工作。当我使用相同的命令行从.net应用程序内部启动存根时,就会出现问题。它似乎与在.net托管代码环境中运行有关。
有什么建议吗?
目标是让.net应用程序在无人值守的Centos服务器上运行,并允许它使用'yum -y localinstall'和本地RPM文件进行更新并重新启动自身(不,它不能转到远程存储库)。