
参考晓晨大佬文章点我,加上自我实操记录。确保按步骤完全可运行。
- 1、守护进程
==>看到组里大佬用这个很熟练,趁着机会,实操一次。
==>中文名字是守护进程,英文“daemon",守护进程是一个在后台运行并且不受任何终端控制的进程,不会随着会话结束而退出。诸如 mysql、apache 等这类程序默认就提供了守护进程或者以守护进程的方式工作,我们熟悉的 “mysqld”、"httpd" 等其中的 d 就是 daemon 的意思。比如我们在 Linux 系统上以命令 dotnet xxx.dll 运行 .NET Core 应用程序时,如果我们结束会话,那么我们的程序将会结束运行。其原因是 Linux 系统中有一个信号机制,进程可以通过一系列信号进行通信,当用户结束会话时,会向当前会话的子进程发送一个 HUP 信号,一般情况下当前会话的子进程收到HUP信号以后就会退出自己。 这时我们就需要一个守护进程来管控我们的 .NET Core 应用程序进程。【ps:这段完全撸大神的原话】 - 2、让进程守护自己
Linux 下让进程后台方式很多,举例子:Supervisor、Screen、nohup 命令 等等。Supervisor 是自己创建了一个守护进程,然后让我们的应用程序进程成为其子进程,通过这种管控方式让我们的应用程序后台运行。nohup 顾名思义,就是不向会话进程发送hup信号。
在这里跟随大佬脚步,就搬出本文的主角 pm2,通过 pm2 来让进程后台运行。 - 3、pm2简介
简单说pm2 是一个高级nodejs进程管理工具。为啥专门针对nodejs的工具用来管理netcore,请看大神说法【博主经过长期的在 Linux 下的摸爬滚打,最终发现使用pm2来守护 .NET Core 进程完全没有问题,除了 nodejs 其他的很多程序都是可以的。而且无需繁琐的配置,安装、使用、管理进程都非常简单,这是我选择它的主要原因。】
特别说明:
这里需要说明一下是使用 pm2 来让进程后台运行,因为如果不是 nodejs 程序, pm2的一些为nodejs准备的功能可能是无法使用的,但是对于我们守护 .NET Core 应用程序足够了。
pm2安装和使用
- 4、安装nodejs
原本打算安全当前最新稳定版本12系列的,但是发现在make时候会报错,所以降低了版本,最终选择了 10版本系列的,再次make,没有报错。
1 | 安装gcc,gc++ | yum -y install gcc gcc-c++ kernel-devel
2 | 下载源码 | wget https://nodejs.org/dist/v8.11.3/node-v8.11.3.tar.gz 该链接可去官网自己下载[官网](https://nodejs.org/en/download/)
3 | 解码源码 | tar -xzf node-v8.11.3.tar.gz
4 | 编译源码 | cd node-v8.11.3 进入源代码路径
./configure 执行配置脚本【不默认的话可以自定义安装目录,如./configure --prefix=/usr/local/nodejs】
make 编译
5 | 安装 | make install 安装
6 | 检查 | node -v
npm -v
在上面第五步完成后,验证第六步可能会出错,有可能是在执行配置文件时,指定了安装目录,但是因为还没有配置环境目录,所以会出错,需要再次配置下环境目录。
配置环境目录:
ln -s /usr/local/nodejs/bin/node /usr/local/bin/node
ln -s /usr/local/nodejs/bin/npm /usr/local/bin/npm
其中的/usr/local/nodejs/是自定义的安装目录

配置环境目录

最后结果npm和nodejs版本结果
- 5、安装pm2
命令: npm install pm2 -g 安装pm2
命令: pm2 -v 可查看当前是否安装成功及版本
在此处其实可能出现pm2 :command not found 问题,其实这个问题可能还是因为在安装配置nodejs时自定义了安装目录的原因,再次配置环境目录,问题完美解决。
解决pm2环境目录问题
-
6、常用命令使用说明
- 7、设置开机启动
整个过程其实是在/etc/systemd/system文件目录下生成了pm2-root.service文件,并对文件编辑写入设置。具体可看下图:
pm2 startup 生成开机自启动服务
pm2 unstartup 关闭开机启动服务
pm2 save 保存当前进程状态
systemctl enable pm2-root 设置开机自启

设置过程
- 8、命令 点击可查看官网
1 | 启动守护监视应用程序:pm2 start [要启动的程序名称] 如:pm2 start web.dll
2 | 列出pm2管理的所有状态: pm2 [list | ls | status]
3 | 查看日志: pm2 logs 较旧的日志:pm2 logs --lines 200
4 | 终端实时仪表盘 :pm2 monit
5 | 基于web的仪表板 :pm2 plus
