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

관련 정보