文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

ASP.NET Core在Linux下为dotnet创建守护进程

2024-04-02 19:55

关注

什么是守护进程

在linux或者unix操作系统中,守护进程(Daemon)是一种运行在后台的特殊进程,它独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。由于在linux中,每个系统与用户进行交流的界面称为终端,每一个从此终端开始运行的进程都会依附于这个终端,这个终端被称为这些进程的控制终端,当控制终端被关闭的时候,相应的进程都会自动关闭。但是守护进程却能突破这种限制,它脱离于终端并且在后台运行,并且它脱离终端的目的是为了避免进程在运行的过程中的信息在任何终端中显示并且进程也不会被任何终端所产生的终端信息所打断。它从被执行的时候开始运转,直到整个系统关闭才退出。

此处的创建守护进程,是指发布在Linux上 asp.net core 程序的dotnet xxx.dll命令的宿主进程创建一个守护进程。

在 Linux 上有很多可以管理进程的工具,我们使用 Supervisor 来做这个事情。

原因有两点:

Supervisor 介绍

Supervisor是采用 Python(2.4+) 开发的,它是一个允许用户管理 基于 Unix 系统进程的 Client/Server 系统,提供了大量功能来实现对进程的管理。

官方文档:http://supervisord.org/

Supervisor 安装

在 masOS 中直接使用brew工具进行安装即可:

brew install supervisor

在 linux 中使用以下命令进行安装:

sudo apt-get install supervisor

yum install supervisor

pip install supervosor

easy_install supervisor

安装完成之后:


mac:~ yangxiaodong$ brew install supervisor
Warning: supervisor-3.2.1 already installed

Supervisor 配置,常用命令

安装完成之后,在/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 #环境变量
user=www-data  #进程执行的用户身份
stopsignal=INT
autostart=true #是否自动启动
autorestart=true #是否自动重启
startsecs=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

或者你可以直接重启 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 节点

然后就可以通过界面来查看运行的进程了:

测试一下

最后,我们测试一下是否会自动重启,开机自动运行?


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)

到此这篇关于ASP.NET Core在Linux下为dotnet创建守护进程的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-人工智能
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯