2017-11-22 6 views
0

私にsystemdユニットファイルを殺しますが、このにsystemdリロードプロセスは

start() { 
    java -jar server.jar & 
} 
reload() { 
    #do some application specific reload stuff 
    start 
} 

ような何か仕上げをリロードするときにsystemdコール私はその権利を実現するよに見える、java -jarを実行しているプロセスが実際に死んでいます。 Systemdは私のリロードプロセスが完了し、それを殺すと思うようです。このプロセスを強制終了する動作を設定してキャンセルする方法はありますか?私はプロセスを拒否しようとしましたが、サービスファイルにはKillMode=blahType=blahがついていますが、結果はありません。

答えて

0

私はあなたの質問を理解している場合、私は右、あなたはserver.jarを実行するためにsystemdユニットファイルをしたいですか、分からないのCentOS 7.4上で実行していますか? 次の手順で試してみてください。

まず、blahサービスユニットファイルを作成します。

# vim /etc/systemd/system/blah.service 

[Unit] 
Description=blah service 
After=network.target 
Requires=network.target 

[Service] 
Type=simple 
EnvironmentFile=/etc/sysconfig/blah 
ExecStart=/usr/bin/java -jar server.jar 
Restart=always 
User=blah_USERNAME 

[Install] 
WantedBy=multi-user.target 

そして、blahサービスユニットファイルをリロードします。

# systemctl daemon-reload 

テストしてください!

# systemctl start blah 
# systemctl status blah 
# systemctl restart blah 
# systemctl status blah 

これがあなたに役立つことを願っています。

+0

私は既にsystemdユニットファイルを持っています。しかし、reload()を呼び出すと、リロードが実行されている間だけプロセスが存続します。例えば、リロード機能に 'sleep 10'を置くと、10秒間サーバーが2回実行されます。その後、リロード機能が実行され、ジャーが殺されます...これは私が望むものではありません –

関連する問題