저는 리눅스 초보자입니다! 서버가 있고 Jenkins를 설치했습니다. jenkins가 컴파일된 후에 애플리케이션을 실행해야 하는 bash 스크립트를 만들어야 합니다(또는 이미 시작된 경우 다시 시작합니다). Linux에서 screen util을 사용해 보았지만 작동하지 않습니다. 나는 다음 스크립트를 작성했습니다.
screen -X -S JavaTelegramBot quit
screen -d -m -S JavaTelegramBot
screen -X -S JavaTelegramBot java -jar "path/to/jar"
팁을 주면 screen -ls
비어 있어서 앱이 작동하지 않습니다. 나는 심지어 nohup을 사용해 보았습니다. Jenkins가 빌드를 완료할 때까지 몇 초 동안만 애플리케이션을 시작합니다. 빌드 후 jenkins에서 cmd 명령을 사용하여 스크립트가 시작되었습니다.
답변1
이는 젠킨스 때문이다.프로세스 트리 킬러, 작업이 종료된 후 Jenkins 작업에 의해 시작된 모든 프로세스를 종료합니다(screen/tmux/nohup/etc를 사용하여 백그라운드에서 작업을 실행하는 경우에도 마찬가지).
위에 링크된 문서에 따르면 Jenkins가 장기 실행 프로세스를 종료하지 못하도록 방지하는 방법은 환경 변수를 설정하는 것입니다.
빌드에서 데몬이 계속 실행되도록 하려는 경우...
이를 달성하는 편리한 방법은 Jenkins의 ProcessTreeKiller가 찾고 있는 환경 변수 BUILD_ID를 변경하는 것입니다. 이로 인해 Jenkins는 데몬이 Jenkins 빌드에 의해 생성되지 않았다고 가정합니다. 예를 들어:
BUILD_ID=dontKillMe /usr/apache/bin/httpd
Jenkins Pipeline인 경우 BUILD_ID 대신 JENKINS_NODE_COOKIE를 사용하세요.