在我提到我的问题之前,我已经检查了大部分与systemd相关的问题,但我找不到令人信服的答案。我编写了一个运行服务器的 nodejs 应用程序。
const express = require('express');
const app = express(),
port = process.env.PORT || 5000;
app.get('/' , ( req , res ) => {
res.send('Hello World')
})
app.listen( port , () => {
console.log(`The server listens on port ${port}`)
})
Run Code Online (Sandbox Code Playgroud)
最初,我创建了一个运行 server.js 的服务,它的工作非常出色。
[Unit]
Description=Hello World
After=network.target
[Service]
ExecStart=/usr/bin/node /home/msimou/Desktop/helloWorld/server.js
User=msimou
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
但是,我通过创建启动或停止服务的 .sh 文件尝试了相同的任务,并尝试嵌入到单元文件中,但由于某种未知原因,服务器无法正常工作。更新后的单元文件如下所示:
[Unit]
Description=Hello World
After=network.target
[Service]
ExecStart=/bin/bash /home/msimou/Desktop/helloWorld/init/startHelloWorld.sh
ExecStop=/bin/bash /home/msimou/Desktop/helloWorld/init/stopHelloWorld.sh
User=msimou
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
我检查了日志文件/var/log/syslog
并journalctl
发现了错误,但我唯一能看到的是 systemd 连续启动和停止我的服务 …