守护进程,英文名:“daemon”,是一个在后台运行并且不受任何终端控制的进程,不会随着会话结束而退出;就是常说的后台运行:以下介绍用 nohup 和 pm2 来管理守护进程

nohub

安装

CentOS 系统默认自带,安装方法如下:

1
2
yum install coreutils
nohup --help

Usage: nohup COMMAND [ARG]…
or: nohup OPTION
Run COMMAND, ignoring hangup signals.

  --help     display this help and exit
  --version  output version information and exit

If standard input is a terminal, redirect it from /dev/null.
If standard output is a terminal, append output to ‘nohup.out’ if possible,
‘$HOME/nohup.out’ otherwise.
If standard error is a terminal, redirect it to standard output.
To save output to FILE, use ‘nohup COMMAND > FILE’.

NOTE: your shell may have its own version of nohup, which usually supersedes
the version described here. Please refer to your shell’s documentation
for details about the options it supports.

GNU coreutils online help: < http://www.gnu.org/software/coreutils/>
For complete documentation, run: info coreutils ‘nohup invocation’

使用

运行

1
2
nohup dotnet test.dll &
nohup: ignoring input and appending output to 'nohup.out'

关闭

1
2
jobs -l
kill -9 PID

日志

1
tail nohup.out

pm2

pm2 是一个高级的 NodeJS 进程管理工具,使用 pm2 需要安装 NodeJS,详细操作见:[[Linux 系统搭建 Node.js 环境]]

加速

修改成阿里云镜像

1
2
3
4
5
#设置
npm config set registry https://registry.npmmirror.com
#验证
npm config get registry
#返回 https://registry.npmmirror.com 表示成功

安装

在线

安装完 NodeJS 就可以使用 npm 命令了

1
2
npm i pm2 -g
ln -s /usr/local/nodejs/bin/pm2 /usr/bin/

离线

进入模块文件夹:/usr/local/node/lib/node_modules,压缩

1
2
cd /usr/local/node/lib/node_modules
tar -czvf pm2.tar.gz pm2

将压缩包拷贝到离线设备 /usr/local/node/lib/node_modules 目录下
1
2
cd /usr/local/node/lib/node_modules
tar -zxvf pm2.tar.gz

解压完成后,尝试运行
1
/usr/local/node/lib/node_modules/pm2/bin/pm2

软连接

这样我们可以直接使用 pm2 全局命令

1
2
3
4
5
6
7
8
#配置 node 变量
ln -s /usr/local/node/lib/node_modules/pm2/bin/pm2 /usr/local/node/bin/pm2
ln -s /usr/local/node/lib/node_modules/pm2/bin/pm2-dev /usr/local/node/bin/pm2-dev
ln -s /usr/local/node/lib/node_modules/pm2/bin/pm2-docker /usr/local/node/bin/pm2-docker
ln -s /usr/local/node/lib/node_modules/pm2/bin/pm2-runtime /usr/local/node/bin/pm2-runtime

#配置全局变量
ln -s /usr/local/node/bin/pm2 /usr/local/bin/pm2

使用

命令

命令 说明
pm2 update 更新版本
pm2 list 显示所有进程状态
pm2 startup 产生 init 脚本,保持进程后台运行
pm2 monit name 监视指定(所有)进程,查看进程的资源消耗情况等
pm2 log name 显示指定(所有)日志
pm2 stop name(all) 停止指定(所有)进程
pm2 restart name(all) 重启指定(所有)进程
pm2 reload name(all) 0 秒停机重载进程 (用于 NETWORKED 进程)
pm2 selete name(all) 删除指定(所有)进程

实例

背景:用 .NET Core 搭建了个小应用,可以部署的闲置服务器系统是 Linux,于是先部署了相应的运行环境


直接将发布后的文件上传到服务器,进入到应用所在目录,执行一下语句即可

.NET Core 应用程序需要 runtimeconfig.json 文件

1
2
pm2 start "dotnet test.dll" --name test
pm2 monit test