在linux或者unix操作系统中,守护进程(daemon)是一种运行在后台的特殊进程,它独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。由于在linux中,每个系统与用户进行交流的界面称为终端,每一个从此终端开始运行的进程都会依附于这个终端,这个终端被称为这些进程的控制终端,当控制终端被关闭的时候,相应的进家长会方案程都会自动关闭。但是守护进程却能突破这种限制,它脱离于终端并且在后台运行,并且它脱离终端的目的是为了避免进程在运行的过程中的信息在任何终端中显示并且进程也不会被任何终端所产生的终端信息所打断。它从被执行的时候开始运转,直到整个系统关闭才退出。
此处的创建守护进程,是指发布在linux上 asp.net core 程序的dotnet xxx.dll
命令的宿主进程创建一个守护进程。
在 linux 上有很多可以管理进程的工具,我们使用 supervisor 来做这个事情。
原因有两点:
1、它是微软官方文档推荐的,降低学习成本。2、它并不一定是最好的,但一定是文档最全的。supervisor是采用 python(2.4+) 开发的,它是一个允许用户管理 基于 unix 系统进程的 client/rver 系统,提供了大量功能来实现对进程的管理。
官方文档:http://supervisord.org/
在 masos 中直接使用brew
工具进行安装即可:
brew install supervisor
在 linux 中使用以下命令进行安装:
ubuntusudo apt-ge2022高考作文t install supervisor
yum install supervisor
pip install supervosor
easy_install supervisor
安装完成之后:
mac:~ yangxiaodong$ brew install supervisorwarning: supervisor-3.2.1 already installed
安装完成之后,在/ect/supervisor/conf.d/
目录下新建一个配置文件(touch hellowebapp.conf
),取名为hellowebapp.conf
打开hellowebapp.conf (vim hellowebapp.conf
),写入如下命令:
[program:全年工作总结hellowebapp]command=dotnet hellowebapp.dll #要执行的命令directory=/home/yxd/workspace/publish #命令执行的目录environment=aspnetcore__environment=production #环境变量ur=www-data #进程执行的用户身份stopsignal=intautostart=true #是否自动启动autorestart=true #是否自动重启startcs=1 #自动重启间隔stderr_logfile=/var/log/hellowebapp.err.log #标准错误日志stdout_logfile=/var/log/hellowebapp.out.log #标准输出日志
配置好以后 (:wq
保存退出),需要重新加载一下言情小说推荐配置
sudo supervisorctl shutdown && sudo supervisord -c /etc/supervisor/supervisord.conf
或者你可以直接重启 淘宝双11活动方案supervisor:
sudo rvice supervisor stopsudo rvice supervisor start
如果启动的时候报错,可以打开位于/etc/log/supervisor/supervisord.log
文件来查看具体的日志。
其中dotnet 命令输出的日志文件分别为位于
/var/log/hellowebapp.err.log/var/log/hellowebapp.out.log
在这些文件里面你可以查看程序中的异常信息或者是运行信息。
打开浏览器,输入http://localhost:5000
发现已经可以浏览了。
supervisor 常用命令
supervisorctl shutdown #关闭所有任务supervisorctl stop|start program_namesupervisorctl status #查看所有任务状态
supervisor 默认给我们提供了一个图形界面来供我们管理进程和任务,在 macos 中默认配置的有,但是在 linux 中我们需要手动开启一下。
打开位于/etc/supervisor/supervisord.conf
文件,添加inet_http_rver 节点
然后就可以通过界面来查看运行的进程了:
最后,我们测试一下是否会自动重启,开机自动运行?
1、进程管理中干掉dot net ,发现可以重新启动。以下是日志:2016-07-09 12:24:18,626 info spawned: 'hellowebapp' with pid 17742016-07-09 12:24:19,766 info success: hellowebapp entered running state, process has stayed up for > than 1 conds (startcs)2016-07-09 12:27:43,208 info exited: hellowebapp (exit status 0; expected)2016-07-09 12:27:44,223 info spawned: 'hellowebapp' with pid 36872016-07-09 12:27:45,243 info success: hellowebapp entered running state, process has stayed up for > than 1 conds (startcs)2、重启机器,发现可以自动运行。
到此这篇关于asp.net core在linux下为dotnet创建守护进程的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持www.887551.com。
本文发布于:2023-04-04 12:34:13,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/1c741bceff2382f43571eef1f2324fb8.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:ASP.NET Core在Linux下为dotnet创建守护进程.doc
本文 PDF 下载地址:ASP.NET Core在Linux下为dotnet创建守护进程.pdf
留言与评论(共有 0 条评论) |