这是我的自定义服务文件(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