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.servicestartServer.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をシャットダウンすることです。

関連情報