Azure DevOps启动Linux后台进程10秒后终止,如何正确操作?
问题根源
Azure DevOps的Bash任务会在父shell进程退出后,强制清理所有关联的子进程;同时你原命令中,后台启动的dotnet进程仍继承了任务的STDIO流,导致任务检测到流未在10秒内关闭,最终触发子进程终止。
正确实现方式
彻底脱离STDIO流并解除进程与当前shell的关联,避免被任务清理:
使用以下命令(按需选择日志输出方式):- 丢弃所有输出(无日志):
nohup dotnet <path to the main dotnetapp.dll> > /dev/null 2>&1 < /dev/null & disown- 输出到日志文件(便于排查问题):
nohup dotnet <path to the main dotnetapp.dll> > /var/log/dotnet_app.log 2>&1 < /dev/null & disown命令各部分作用说明:
> /dev/null:将标准输出重定向到空设备,彻底切断任务的标准输出流关联2>&1:将标准错误重定向到与标准输出相同的目标(空设备或日志文件)< /dev/null:将标准输入重定向到空设备,确保进程不会等待任务的输入流& disown:将后台进程从当前shell的作业列表中移除,避免shell退出时向进程发送终止信号
内容的提问来源于stack exchange,提问作者CodeWeed
相关产品推荐
相关产品推荐

