问题:
在使用supervisor给ASP.Net Core配置守护进程的时候,在终端上使用supervisorctl命令查看,应用报错如下:

查看在/etc/supervisor/supervisord.conf配置文件中配置的日志文件/var/log/supervisord.log

看这个报错还是看不出具体原因,再查看在/etc/supervisor/conf.d/DataMining.conf配置文件中配置的日志文件/var/log/DataMining.err.log

发现,实际报错是"Can't drop privilege as nonroot user"
原因:
在/etc/supervisor/conf.d/DataMining.conf配置文件中配置了任务程序运行的用户是root,但实际登录系统的用户是user,导致该报错
[program:DataMining]
command=dotnet AngularDemo01.dll ;
directory=/usr/publish/DataMining/netcoreapp3.1/publish/ ;
autorestart=true ;
stderr_logfile=/var/log/DataMining.err.log ;
stdout_logfile=/var/log/DataMining.out.log ;
environment=ASPNETCORE_ENVIRONMENT=Production ;
user=root ;
stopsignal=INT解决方案:
将/etc/supervisor/conf.d/DataMining.conf配置文件的user修改为当前登录的用户即可
[program:DataMining]
command=dotnet AngularDemo01.dll ;
directory=/usr/publish/DataMining/netcoreapp3.1/publish/ ;
autorestart=true ;
stderr_logfile=/var/log/DataMining.err.log ;
stdout_logfile=/var/log/DataMining.out.log ;
environment=ASPNETCORE_ENVIRONMENT=Production ;
user=user ;
stopsignal=INT如果supervisord启动的环境中包含了变量USER并且它被设置为当前用户,还可以将配置文件中的user配置为当前登录用户
user=%(ENV_USER)s