본문 바로가기
공부/프로그래밍

[jenkins] Execute Shell 에서 프로세스 이름으로 프로세스 kill 하기

by demonic_ 2019. 8. 22.
반응형

Springboot 를 실행하는 것 기준으로 작성되었다.


jenkins 로 배포한 후에 스크립트를 이용해서 실행하고 싶을 때, 이전 프로세서를 죽여야 할 때가 있다.
안그러면 1개의 모듈이 2개 이상 뜨는 문제점이 발생할 수 있거나, 
혹은 이전 프로세서때문에 새로 반영되어야 할 프로세서가 제대로 실행을 되지 않는 경우도
(포트가 겹쳐 신규 프로젝트가 실행하지 못하는 경우)


Build -> Execute shell 에서 다음과 같이 입력한다

PROC=`ps aux | grep web-test`
if [[ $PROC == *"web-test"* ]]; then
  echo "Process is running."
  sudo kill -15 `ps -ef | grep web-test | grep -v grep | awk '{print $2}'`
else
  echo "Process is not running."
fi

# sudo 를 붙이지 않으면 실행되지 않았음.(nohup 이 붙어서 그런걸로 판단)
cd /[경로]/web-test
sudo nohup java -jar -Dspring.profiles.active=prod web-test.jar 1> /dev/null 2>&1 &

 

저장한 후 실행하여 로그를 보면 다음처럼 실행이 된다.

++ ps aux
++ grep web-test
+ PROC_MONIT='root     402301  0.0  0.0 243168  4696 ?        S    09:32   0:00 sudo nohup java -jar -Dspring.profiles.active=prod web-test.jar
root     402308  3.8  2.6 13511888 868960 ?     Sl   09:32   0:54 java -jar -Dspring.profiles.active=prod web-test.jar
jenkins  437607  0.0  0.0 116880  1016 ?        S    09:56   0:00 grep web-test'
+ [[ root     402301  0.0  0.0 243168  4696 ?        S    09:32   0:00 sudo nohup java -jar -Dspring.profiles.active=prod web-test.jar
root     402308  3.8  2.6 13511888 868960 ?     Sl   09:32   0:54 java -jar -Dspring.profiles.active=prod web-test.jar
jenkins  437607  0.0  0.0 116880  1016 ?        S    09:56   0:00 grep web-test == *\e\d\i\y\a\_\m\o\n\i\t\o\r\i\n\g* ]]
+ echo 'Process is running.'
Process is running.
++ ps -ef
++ grep web-test
++ grep -v grep
++ awk '{print $2}'
+ sudo kill -15 402301 402308
+ sudo nohup java -jar -Dspring.profiles.active=prod web-test.jar
Finished: SUCCESS

끝.

반응형

댓글