Linux服务进程崩溃后自动启动
这个 systemd 服务单元文件用于在 Linux 服务器上管理一个 Node.js 应用程序的后台运行。以下是它的主要功能和作用:
功能解析
-
定义服务基本信息
[Unit] Description=My Node.js Application After=network.targetDescription:描述这个服务的作用(Node.js 应用)。After=network.target:确保网络服务启动后再启动这个服务。
-
设置工作环境
[Service] WorkingDirectory=/root/my-markdown-site Environment=PORT=3001 Environment="PATH=/root/node-v18.18.1-linux-x64-glibc-217/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"WorkingDirectory=/root/my-markdown-site:设置工作目录,服务会在此目录下执行命令。Environment=PORT=3001:定义环境变量,指定应用运行端口。Environment="PATH=...":确保npm和node可用,因为它们安装在/root/node-v18.18.1-linux-x64-glibc-217/bin目录下,而不是全局可用的路径中。
-
启动 Node.js 应用
ExecStart=/root/node-v18.18.1-linux-x64-glibc-217/bin/npm run startExecStart运行npm run start命令,以启动 Node.js 应用。- 使用绝对路径
/root/node-v18.18.1-linux-x64-glibc-217/bin/npm确保npm可被找到。
-
自动重启
Restart=always RestartSec=5Restart=always:如果进程崩溃,会自动重启。RestartSec=5:如果进程崩溃,等待 5 秒 后再尝试重启。
-
设置开机自启
[Install] WantedBy=multi-user.targetWantedBy=multi-user.target:确保该服务在多用户模式(即正常系统启动)时自动启动。
如何使用
-
保存文件
- 把这个内容保存为
/etc/systemd/system/my-node-app.service。
- 把这个内容保存为
-
加载 systemd 配置
sudo systemctl daemon-reload -
启动服务
sudo systemctl start my-node-app -
检查服务状态
sudo systemctl status my-node-app -
设置开机自启
sudo systemctl enable my-node-app -
停止/重启服务
sudo systemctl stop my-node-app sudo systemctl restart my-node-app
总结
- 这个
systemd配置文件会在 服务器开机时自动启动 Node.js 应用,并确保应用 崩溃后自动重启。 - 适用于 生产环境部署,减少应用因意外错误中断的可能性。
