[jenkins] 에서 execute 셸 을 통 해 시 작 된 프로 세 스 가 죽 는 문제 입 니 다.
4068 단어 jenkins
jenkins 에서 배치 항목 을 자동 으로 업데이트 할 때 execute 셸 로 tomcat 를 시작/닫 으 면 tomcat 를 닫 을 수 있 지만 tomcat 를 시작 할 수 없습니다. 구축 은 실행 성공 을 표시 하지만 프로 세 스 를 보면 tomcat 가 시작 되 지 않 았 습 니 다.이 는 Jenkins 가 기본적으로 Build 가 끝 난 후에 모든 파생 프로 세 스 를 죽 이기 때문이다.다음 설정 을 해 야 이러한 상황 을 피 할 수 있 습 니 다.
1. 환경 변수 build 재 설정id
execute 셸 입력 상자 에 BUILD 추가ID = DONTKILLME, 시작 하 는 tomcat 프로 세 스 를 젠 킨 스 가 죽 이 는 것 을 방지 합 니 다.
2. 젠 킨 스 를 시작 할 때 젠 킨 스 가 파생 프로 세 스 를 죽 이 는 것 을 금지 합 니 다.
설정 수정
/etc/sysconfig/jenkins
, JENKINS 에서JAVA_OPTIONS 에 가입 - Dhudson.util.ProcessTree.disable=true
.여러 값, 빈 칸 으로 분리 해 야 합 니 다. jenkins 를 다시 시작 해 야 합 니 다. 이 방법 으로 한 번 설정 하면 모든 job 는 BUILD 를 설정 하지 않 아 도 됩 니 다.ID, 제 인 킨 스 가 시작 하 는 tomcat 프로 세 스 를 죽 이 는 것 을 방지 할 수 있 습 니 다.- 예시:
BUILD_ID=DONTKILLME
ps -ef |grep tomcat8 |awk '{print $2}'|xargs kill -9
cd /opt/tomcat8/bin
sh ./shutdown.sh
sleep 40s
cd /opt/var/kms_conf/
sh ./tinykms.sh
cd /opt/tomcat8/bin
sh ./startup.sh
방법 1: Jenkins 가 제공 하 는 시작 매개 변 수 를 통 해 하위 프로 세 스 를 죽 이 는 기능 을 사용 하지 않 습 니 다.
Jenkins 는 hudson. util. ProcessTree. disabl hudson. util. ProcessTreeKiller. disable 두 가지 속성 을 제공 하여 기능 을 제어 합 니 다. 값 은 true 이 며 이 기능 을 사용 하지 않 습 니 다.Hudson. util. ProcessTree. disable 은 Jenkins 1.260 부터 사용 되 며, 1.315 이전 Hudson 을 사용 할 때 Hudson. util. ProcessTree Killer. disable 만 사용 할 수 있 습 니 다. 버 전 호 환 을 위해 Jenkins 1.260 이후 이 두 속성 을 모두 사용 할 수 있 습 니 다. 1.260 의 Jenkins 사용 자 는 Hudson. util. ProcessTree. disable 속성 을 사용 하 는 것 을 권장 합 니 다.이런 방식 은 Jenkins 가 시작 되 기 전에 설정 해 야 한다. 다음은 필자 의 경험 에 따라 각종 사용 상황 에서 어떻게 설정 하 는 지, 누락 이 있 으 면 보충, 지적 을 환영한다.
자바 - jar 로 시작,
-Dhudson.util.ProcessTree.disable=true -jar jenkins.war
Tomcat 로 시작, 리 눅 스 시스템 수정 catalina. sh, 환경 변수 설명 후 스 크 립 트 시작 전에 JAVAOPTS=”$JAVA_OPTS -Dhudson.util.ProcessTree.disable=true”;#Windows 시스템 에서 catalina. bat 를 수정 하고 환경 변수 에 대한 설명 을 한 후 스 크 립 트 시작 전에 set JAVA 를 추가 합 니 다.OPTS=%JAVA_OPTS% “-Dhudson.util.ProcessTree.disable=true”;Tomcat 의 설정 파일 을 수정 한 후 Tomcat 을 다시 시작 합 니 다. 대부분의 경우 이 기능 을 완전히 사용 하지 않 는 것 은 우리 가 원 하 는 결과 가 아 닐 수 있 습 니 다. 이 방법 은 작업 중 에 사용 하 는 것 을 권장 하지 않 습 니 다. 권장 하 는 방법 은 "방법 2"방법 2: Jenkins 의 환경 변 수 를 수정 하 는 BUILD 를 참고 하 십시오.ID, 그러면 Jenkins 는 시작 한 배경 프로 세 스 가 job 에서 만 들 어 졌 다 고 생각 하지 않 습 니 다. 在execute shell或windows batch输入框的中执行期望job结束后继续运行的命令前加上如下代码(以启动tomcat为例):
Linux: OLD_BUILD_ID= BUILDIDecho B U I L D I D e c h o OLD_BUILD_ID BUILD_ID = DONTKILLME//"DONTKILLME"는 가 독성 을 위해 쓴 것 입 니 다. startup. sh//실제 상황 에 따라 시작 명령 의 경 로 를 수정 할 수 있 습 니 다 BUILDID= OLDBUILDIDecho O L D B U I L D I D e c h o BUILD_ID
Windows
OLD_BUILD_ID=%BUILD_ID%
echo %OLD_BUILD_ID%
BUILD_ID=DONTKILLME
startup.bat //根据实际情况修改启动命令的路径
BUILD_ID=%OLD_BUILD_ID%
echo %BUILD_ID%
참고 자료https://wiki.jenkins-ci.org/display/JENKINS/ProcessTreeKiller
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
단일 명령으로 첫 번째 Jenkins 서버 시작Jenkins는 가장 오래되고 가장 널리 사용되는 CI/CD 도구 중 하나입니다. 그것은 시장을 지배하고 직업 위치의 50% 이상에 대한 요구 사항입니다. 그러나 Jenkins는 복잡한 솔루션이므로 설치하는 데 많은...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.