이것은 내 사용자 정의 서비스 파일(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을 종료하는 것입니다.