私はsystemctlを使ってサービスを開始していますが、Redhatシステムでサービスを停止する問題に直面しています。
私が作成するサービスファイルは次のとおりです。
[Unit]
Description=/home/agenttest
After=syslog.target
[Service]
ExecStart=/bin/bash /home/agenttest/service/test.sh
SuccessExitStatus=143
TimeoutStopSec=10
KillMode=mixed
[Install]
WantedBy=multi-user.target
test.sh では、次のコマンドを使用します。
sudo /home/ec2-user/jdk1.8.0_211/jre/bin/java -jar /home/agenttest/service/agent.jar --spring.config.location=classpath:/test.properties,/home/agenttest/service/test.properties --server.port=8081
サービスが正常に開始されました:
ただし、コマンドを使用してサービスを停止すると、すべてのsystemctl stop <service_name>
プロセスは停止されません。
次のコマンドを使用してサービスを停止しました。
sudo systemctl stop ConnectOnceAgent_8081_PROD_SYSTEMCTL
sudo systemctl disable ConnectOnceAgent_8081_PROD_SYSTEMCTL
ただし、サービスが停止しているように見えますが、すべてのプロセスはまだ実行中です。
4 0 10166 10129 20 0 3466036 296488 - Sl ? 3:58 /home/ec2-user/jdk1.8.0_211/jre/bin/java -jar /home/agenttest/service/agent.jar -
4 0 10167 10135 20 0 3463436 517428 - Sl ? 2:00 /home/ec2-user/jdk1.8.0_211/jre/bin/java -jar /home/agenttest/service/agent.jar -
4 0 10168 10140 20 0 3460760 514544 - Sl ? 2:01 /home/ec2-user/jdk1.8.0_211/jre/bin/java -jar /home/agenttest/service/agent.jar -
4 0 10169 10142 20 0 3460760 531220 - Sl ? 2:03 /home/ec2-user/jdk1.8.0_211/jre/bin/java -jar /home/agenttest/service/agent.jar -
4 0 10170 10141 20 0 3460684 515260 - Sl ? 2:02 /home/ec2-user/jdk1.8.0_211/jre/bin/java -jar /home/agentt
実行すると、ps -ef | grep -i 8081
次のログが表示されます。
root 10140 1 0 Sep18 ? 00:00:00 sudo /home/ec2-user/jdk1.8.0_211/jre/bin/java -jar /home/agenttest/service/agent.jar --spring.config.location=classpath:/executorService.properties,/home/agenttest/service/ConnectOnceAgent_8081_PROD.properties --server.port=8081
root 10168 10140 0 Sep18 ? 00:02:01 /home/ec2-user/jdk1.8.0_211/jre/bin/java -jar /home/agenttest/service/agent.jar --spring.config.location=classpath:/executorService.properties,/home/agenttest/service/ConnectOnceAgent_8081_PROD.properties --server.port=8081
ec2-user 17230 17186 0 10:44 pts/0 00:00:00 grep --color=auto -i 8081
この問題はredhatでのみ見られます。他のLinuxシステムではうまく機能します。
ただし、サービスが停止しているとマークされていても、すべてのプロセスはまだ実行中です。
また、コントロールグループ、プロセス、ミックスなどの他のプロパティも変更しましたが、KillMode=mixed
うまく機能することがわかりませんでした。
助けてください。
よろしくお願いします!
答え1
systemctlがデフォルトプロセス3714を停止しています。ただし、生成されたサブプロセスは/home/agenttest/service/test.sh
まだアクティブです。
焦点を変えることを検討してください
ExecStart=/bin/bash /home/agenttest/service/test.sh
次に
ExecStart=/home/ec2-user/jdk1.8.0_211/jre/bin/java -jar /home/agenttest/service/agent.jar --spring.config.location=classpath:/test.properties,/home/agenttest/service/test.properties --server.port=8081