Linux服务进程崩溃后自动启动
这个 systemd
服务单元文件用于在 Linux 服务器上管理一个 Node.js 应用程序的后台运行。以下是它的主要功能和作用:
功能解析
-
定义服务基本信息
[Unit] Description=My Node.js Application After=network.target
Description
:描述这个服务的作用(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 start
ExecStart
运行npm run start
命令,以启动 Node.js 应用。- 使用绝对路径
/root/node-v18.18.1-linux-x64-glibc-217/bin/npm
确保npm
可被找到。
-
自动重启
Restart=always RestartSec=5
Restart=always
:如果进程崩溃,会自动重启。RestartSec=5
:如果进程崩溃,等待 5 秒 后再尝试重启。
-
设置开机自启
[Install] WantedBy=multi-user.target
WantedBy=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 应用,并确保应用 崩溃后自动重启。 - 适用于 生产环境部署,减少应用因意外错误中断的可能性。