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