systemctl start custom.service 不返回

systemctl start custom.service 不返回

这是我的自定义服务文件(elastalert.service)

[Unit]
Description=Elastalert
Documentation=https://elastalert.readthedocs.io/en/latest/elastalert.html#configuration
Wants=network-online.target
After=network-online.target

[Service]
Type=Simple
RuntimeDirectory=elastalert
WorkingDirectory=/home/shubham/elastalert
User=shubham
Group=shubham
StandardOutput=journal
StandardError=inherit
TimeoutStartSec=0
ExecStart=/home/shubham/elastalert/startServer.sh
ExecStop=/home/shubham/elastalert/killServer.sh
ExecReload=/home/shubham/elastalert/reloadServer.sh
KillSignal=SIGTERM
PrivateTmp=true
Restart=always

[Install]
WantedBy=multi-user.target

这是我的 startServer.sh 脚本,它持续运行(不退出)。

#!/bin/bash
cd /home/shubham/elastalert
NODE_PATH=. BABEL_DISABLE_CACHE=1 node index.js | ./node_modules/.bin/bunyan -o

执行sudo systemctl start elastalert.service既不运行startServer.sh脚本也不返回。

手动执行脚本有效。

该命令sudo journalctl -u elastalert.service也没有显示任何内容。

在 Centos 7 上运行。

请帮忙。

编辑

该脚本在启动后自动执行,但命令sudo systemctl stop elastalert.service不返回。

可以手动终止服务器(在端口 3030 上运行)。

这是杀死服务器的脚本(killServer.sh)

#!/bin/bash
cd /home/shubham/elastalert
/bin/kill -9 $(lsof -t -i:3030)
rm -f /home/shubham/elastalert/elastalert.pid

但随后尝试使用该命令重新启动sudo systemctl start elastalert.service也不会返回。

因此自动启动服务器的唯一方法是重新启动VM,而停止服务器的唯一方法是关闭VM

相关内容