本文介绍了关于“如何在Linux下为dotnet创建一个守护进程”的知识。很多人在实际办案过程中都会遇到这样的困难。接下来,让边肖带领大家学习如何应对这些情况!希望大家认真阅读,学点东西!
00-1010在linux或unix操作系统中,Daemon是后台运行的特殊进程,它独立于控制终端,定期执行某些任务或等待处理某些事件。在linux中,每个系统和用户之间的接口被称为终端,从这个终端运行的每个进程都会被附加到这个终端上。这个终端被称为这些过程的控制终端。当控制终端关闭时,相应的进程将自动关闭。但是,守护进程可以突破这个限制。它离开终端,在后台运行。离开终端的目的是防止进程的信息在任何终端显示,并且进程不会被任何终端生成的终端信息中断。它从执行时开始运行,直到整个系统关闭。
这里,创建守护进程是指通过Linux上发布的ASP.NET Core程序的dotnet xxx.dll命令的主机进程来创建守护进程。
在Linux上有很多管理进程的工具,我们使用Supervisor来做到这一点。
原因有二:
1.微软官方文档推荐,降低学习成本。
2.它不一定是最好的,但一定是最完整的文件。
什么是守护进程
Supervisor是Python(2.4)开发的。它是一个允许用户基于Unix系统管理进程的Client/Server系统,提供了很多管理进程的功能。
正式文件:http://supervisord.org/
00-1010只需使用brew工具直接安装在masOS中:
brew安装主管
使用以下命令在linux中安装:
人的本质
sudo apt-get安装主管
摘录
百胜安装主管
大蟒
pip安装supervosor
简易安装管理器
安装后:
mac: ~杨晓东$ brewinstallsupervisor
警告:已安装的supervisor-3 . 2 . 1
Supervisor 介绍
完成后,在/ect/supervisor/conf.d/目录中创建新的配置文件(触摸HelloWebApp.conf),并将其命名为HelloWebApp.conf
打开hellowebapp . conf(vim hellowebapp . conf)并编写以下命令:
[程序:HelloWebApp]
命令=要执行的命令
目录=/home/yxd/workspace/publish #命令执行目录
环境=aspnetcore _ _环境=生产#环境变量
用户=www-data#流程执行的用户身份
stopsignal=INT
Autostart=true#是否自动启动?
自动重新启动=true#您想自动重新启动吗?
Secs=1 #自动重启间隔
stder _ log file=/var/log/hellowebapp . err . log #标准错误日志
stdout _ log file=/var/log/hellowebapp . out . log #标准输出日志
p>配置好以后 (:wq
保存退出),需要重新加载一下配置
sudo supervisorctl shutdown && sudo supervisord -c /etc/supervisor/supervisord.conf
或者你可以直接重启 Supervisor:
sudo service supervisor stop sudo service 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_name supervisorctl status #查看所有任务状态
Supervisor UI 管理台
Supervisor 默认给我们提供了一个图形界面来供我们管理进程和任务,在 macOS 中默认配置的有,但是在 Linux 中我们需要手动开启一下。
打开位于/etc/supervisor/supervisord.conf
文件,添加inet_http_server 节点
然后就可以通过界面来查看运行的进程了:
测试一下
最后,我们测试一下是否会自动重启,开机自动运行?
-
1、进程管理中干掉dot net ,发现可以重新启动。以下是日志:
2016-07-09 12:24:18,626 INFO spawned: 'HelloWebApp' with pid 1774 2016-07-09 12:24:19,766 INFO success: HelloWebApp entered RUNNING state, process has stayed up for > than 1 seconds (startsecs) 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 3687 2016-07-09 12:27:45,243 INFO success: HelloWebApp entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
-
2、重启机器,发现可以自动运行。
“在Linux下怎么为dotnet创建守护进程”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/156264.html