NAS systemctl PM2 process manager

13 min read
pm2 startup

输出

Init System found: systemd
Platform systemd
Template
[Unit]
Description=PM2 process manager
Documentation=https://pm2.keymetrics.io/
After=network.target

[Service]
Type=forking
User=root
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
Environment=PATH=/opt/bin:/opt/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin:/volume1/@appstore/Node.js_v18/usr/local/bin:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
Environment=PM2_HOME=/root/.pm2
PIDFile=/root/.pm2/pm2.pid
Restart=on-failure

ExecStart=/usr/local/lib/node_modules/pm2/bin/pm2 resurrect
ExecReload=/usr/local/lib/node_modules/pm2/bin/pm2 reload all
ExecStop=/usr/local/lib/node_modules/pm2/bin/pm2 kill

[Install]
WantedBy=multi-user.target

Target path
/etc/systemd/system/pm2-root.service
Command list
[ 'systemctl enable pm2-root' ]
[PM2] Writing init configuration in /etc/systemd/system/pm2-root.service
[PM2] Making script booting at startup...
[PM2] [-] Executing: systemctl enable pm2-root...
Created symlink from /etc/systemd/system/multi-user.target.wants/pm2-root.service to /etc/systemd/system/pm2-root.service.
[PM2] [v] Command successfully executed.
+---------------------------------------+
[PM2] Freeze a process list on reboot via:
$ pm2 save

[PM2] Remove init script via:
$ pm2 unstartup systemd

PM2 初始化系统检测到你的系统正在运行 systemd,因此生成了一个相应的模板。模板包括 DescriptionAfterServiceInstall 等部分,分别描述了 PM2 进程管理器的说明、依赖关系、服务运行配置和安装方式。

具体来说,Service 部分包括以下配置:

  • Type=forking 表示服务的类型为 fork,即在启动服务时会新创建一个子进程。
  • User=root 表示服务的运行用户为 root 用户。
  • LimitNOFILELimitNPROCLimitCORE 分别表示服务的文件打开数、进程数和内核转储大小限制。这些限制可以提高系统安全性和稳定性。
  • Environment 表示服务的环境变量,包括 PATH 和 PM2_HOME 等。
  • PIDFile 表示服务的 PID 文件路径。
  • Restart=on-failure 表示在服务失败时自动重启服务。

ExecStartExecReloadExecStop 分别表示服务的启动、重载和停止命令。这些命令会通过 /usr/local/lib/node_modules/pm2/bin/pm2 命令执行 PM2 进程管理器。

最后,Install 部分包括了安装方式,其中 WantedBy=multi-user.target 表示服务的启动级别为多用户级别。

PM2 会将该模板写入 /etc/systemd/system/pm2-root.service 文件中,并将服务添加到 systemd 的启动配置中。此后,你可以通过 systemctl enable pm2-root 命令将 PM2 添加到启动项中,并通过 pm2 save 命令保存进程列表。