배경
사내 운영/개발 Batch 서버의 Job 작업 종료 후 중단되지 않고 지속적으로 프로세스가 살아있는 상태에서 해당 java 프로세스 종료시키는 스크립트를 작성하였음.
스크립트
#!/bin/bash
LIST=$(ps -eo pid,etime,cmd | grep java | grep -v grep | awk '{print $1 ";" $2}')
for ITEM in $LIST
do
echo "ITEM : ${ITEM}"
IFS=';' #setting space as delimiter
read -ra SPLIT <<<"$ITEM" #reading str as an array as tokens separated by IFS
PID=${SPLIT[0]}
IFS='-'
read -ra SPLIT_ITEM <<<"${SPLIT[1]}"
if [[ ${#SPLIT_ITEM[@]} > 1 ]]; then
if [[ $((SPLIT_ITEM[0])) > 0 ]] ; then
echo "PID : ${PID}"
kill -9 $PID
fi
fi
done