我正在为我的应用做一个临时的CI/CD系统,当通知推送到Github存储库时,应用会自动停止,脚本会自动运行git pull
来引入更改和更多命令,具体取决于更改的内容。
我想让脚本重新启动自己,没有无限的嵌套,它可以占用资源。
While ($true) {
git pull
# check for changes...
If ($runScriptChanged) {
Break
}
node index.js
}
# ???
为简洁起见,省略了错误检查部分和其他更新部分
- 调用自身可能会起作用,但同样,它可能会无限占用资源,直到停止
- 创建一个新文件来运行上述脚本仍然会在存储库中留下一个无法自动更新的文件
Start-Process
是我找到的最好的,但我不确定它在Linux上的行为- 启动shell什么时候关闭?它和Windows上的
-NoNewWindow
一样吗(只要有东西在使用它,它就一直打开)?(目前我在Windows Server上运行它,所以与Linux的兼容性不是一个大问题,但有它很好)
我该走哪条路?谢谢
1条答案
按热度按时间bttbmeg01#
您可以考虑使用PowerShell作业和
Start-Job
cmdlet。它将在后台启动您的进程,并且还具有一些使用其他-Job
cmdlet(如Get-Job
、Wait-Job
、Stop-Job
等)的监视和管理功能。有关详细信息,请参见about_Jobs。