systemctl stop は Redhat のすべてのプロセスを停止しません。

systemctl stop は Redhat のすべてのプロセスを停止しません。

私は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

関連情報