在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
一.守护进程的前世今生 守护进程,英文名:“daemon",也有守护神的意思。守护进程是一个在后台运行并且不受任何终端控制的进程,不会随着会话结束而退出。诸如 mysql、apache 等这类程序默认就提供了守护进程或者以守护进程的方式工作,我们熟悉的 “mysqld”、"httpd" 等其中的 d 就是 daemon 的意思。比如我们在 Linux 系统上以命令 二.让进程后台运行 Linux 下让进程后台方式很多,举栗子:Supervisor、Screen、nohup 命令 等等。Supervisor 是自己创建了一个守护进程,然后让我们的应用程序进程成为其子进程,通过这种管控方式让我们的应用程序后台运行。nohup 顾名思义,就是不向会话进程发送hup信号。 在这里我就搬出本文的主角 pm2,通过 pm2 来让进程后台运行。 三. pm2介绍 pm2 从名字上和我们平时在生活中接触到的 pm2.5 有点像,不过他们可不是一个东西。做 nodejs 开发的童鞋可能对 pm2 比较熟悉,pm2 是一个高级nodejs进程管理工具。 看到这里,可能有童鞋会有疑问,nodejs进程管理工具怎么管理 .NET Core 进程?博主经过长期的在 Linux 下的摸爬滚打,最终发现使用pm2来守护 .NET Core 进程完全没有问题,除了 nodejs 其他的很多程序都是可以的。而且无需繁琐的配置,安装、使用、管理进程都非常简单,这是我选择它的主要原因。 这里需要说明一下是使用 pm2 来让进程后台运行,因为如果不是 nodejs 程序, pm2的一些为nodejs准备的功能可能是无法使用的,但是对于我们守护 .NET Core 应用程序足够了。 四.pm2的安装以及使用 4.1 安装 4.1.1 安装 nodejs 使用pm2需要安装nodejs,这个网上很多资料,就不再本文详细说明了,我前面写过一篇在 Centos 7下安装的文章,传送门。 4.1.2 安装 pm2 npm install pm2 -g 就一句话,是不是很简单。安装成功以后使用命令 pm2来检查是否安装成功,你会看到如下输出:
4.2 使用 4.2.1 常用命令
官方文档:http://pm2.keymetrics.io/docs/usage/quick-start/ 五. 使用 pm2 守护 ASP.NET Core 应用程序 5.1 创建一个 webapi 项目 # 创建项目 dotnet new webapi --no-https -o testwebapi # 发布项目 cd testwebapi/ dotnet publish -c Release cd bin/Release/netcoreapp2.1/publish # 运行项目 dotnet testwebapi.dll 运行成功会有如下输出: 5.2 使用pm2守护 5.2.1 启动 结束我们刚刚运行的程序,就在我们刚刚的目录执行下面的命令: pm2 start "dotnet testwebapi.dll" --name testwebapi 执行成功: 我们可以清晰的看到我们的应用程序的 pid、运行状态、重启次数(应用程序崩溃重启/手动重启)、运行时间、cpu和内存占用等。十分方便 使用 curl 访问 api 检查是否运行成功: curl http://localhost:5000/api/values 5.2.2 查看日志 pm2 logs testwebapi 5.2.3 查看应用程序信息 pm2 info testwebapi 5.2.4 监控应用程序 pm2 monit testwebapi 5.2.3 重启策略 pm2 会在你的应用程序异常退出时,自动帮你重启,所谓异常退出,指退出代码非0。 测试: 修改 ValueController 添加退出代码为1的代码: 发布,并使用 pm2 启动(此处略)。 通过 访问 api 触发异常退出: curl http://localhost:5000/api/values 再次通过 六.结束 pm2 这个工具相对于 Supervisor 和 nohup 来说,对于Supervisor,没有配置,不用输很长的命令;对于 nohup 管理进程方便。欢迎大家与我交流。 CentOS 7 源码编译安装 NodeJS by 晓晨Master 好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对极客世界的支持。 |
请发表评论