AIX 서비스 상태를 시각화하는 데 문제가 있습니다. 먼저 실행할 셸 스크립트를 가리키는 하위 시스템을 만듭니다.
mkssys -s testService -p /etc/rc.d/init.d/runScriptWithCatalina.sh -u 0
이제 서비스를 으로 시작하면
startsrc -s testService -a "start"
하위 시스템이 시작된 것으로 표시됩니다.
0513-059 The testService Subsystem has been started. Subsystem PID is 9502912.
그리고 서비스가 정말 효과가 있어요. 그러나 으로 하위 시스템 상태를 확인하면
lssrc -a
작동하지 않는 것으로 표시됩니다. 그 이유는 하위 시스템이 시작될 때 catalina.sh 스크립트 시작을 호출하는 runScriptWithCatalina.sh를 호출하고 catalina.sh가 분기되어 새 프로세스를 생성하며 하위 시스템이 이를 감지할 수 없기 때문에 작동하지 않는다는 메시지가 표시된다는 것입니다. . Catalina 스크립트는 다음과 같습니다.https://github.com/magro/msm-sample-webapp/blob/master/runtime/apache-tomcat-6.0.32/bin/catalina.sh. tomcad.pid 파일에는 표시된 하위 시스템 PID인 9502912와 다른 pid가 포함되어 있습니다.
해결책이나 해결 방법이 있습니까, 아니면 다른 방법이 있습니까?
답변1
시스템 리소스 컨트롤러예관련된 한 올바른 상태를 표시합니다. 시작된 PID가 이제 종료되었습니다. SRC가 예상 상태를 표시하도록 하는 가장 좋은 조언은 exec
스크립트 체인의 각 후속 스크립트가 최종 Java 프로세스가 초기 스크립트와 동일한 PID를 차지하도록 하는 것입니다.
단순화된 예:
파일: runScriptWithCatalina.sh
# ...
exec /path/to/catalina.sh
파일:/path/to/catalina.sh
# ...
exec java ...
답변2
catalina.sh
Systemd 공포의 집에서 오늘날 systemd에서 작동하는 것은 이미 IBM System Resource Controller에서도 작동합니다.30 년. 나는 실제로 사람들에게 SRC에서 실행되는 데몬을 작성하는 적절한 방법을 알려주는 일반적인 답변 중 하나에서 IBM Redbook을 참조했으며 이는 다른 시스템에도 동일하게 적용됩니다.1995년에.
catalina.sh
bodge Poor Man's Dæmon Supervisor와 Bad Logger를 사용하는 것은 올바른 접근 방식이 아닙니다.
catalina.sh
에 싸여다른스크립트는분명히이는 올바른 접근 방식이 아닙니다. 그 rc
스크립트를 사용하지 말라고 했어https://unix.stackexchange.com/a/563486/5132.
가장 좋은 방법은 그것을 제거하는 것입니다 catalina.sh
. "Poor Man's Dæmon Supervisor" 및 "Bad Logger" 항목 또는 AIX와 전혀 관련이 없는 모든 항목을 제거하면 일부 환경 변수를 설정한 다음 명령을 실행하는 것 이상의 기능을 수행하지 않는다는 것을 알게 될 것입니다 java
. 직접 할 수도 있고 많은 분들이하다직접하세요.
약간 열등한 방법은 run
for 동사를 사용하는 것입니다 catalina.sh
.
추가 읽기
- 조나단 드보인 폴라드(2001). Unix 데몬을 설계할 때 피해야 할 실수. 일반적인 답변.
- 조나단 데보인 폴라드(2015).무의미한 추가 레이어로 Apache Tomcat 래핑 체계화된 공포의 집.
- systemd를 사용하여 Java 데몬 구성
- https://unix.stackexchange.com/a/437461/5132
- https://unix.stackexchange.com/a/476608/5132