Linux(우분투)에서 프로세스 그룹을 생성하고 종료하려고 합니다.
프로세스 그룹을 종료하려고 하는데 pkill -P $ID는 작동하지만 Kill -- -$ID는 작동하지 않는다는 사실 때문에 미칠 것 같습니다. 이외의 경우 이 스크립트 Kill ---$ID는 예상대로 작동하고 프로세스와 하위 프로세스를 종료하지만 이 경우 프로세스를 찾을 수 없다고 보고하는 반면 pkill -P는 예상대로 그룹을 종료합니다.
pkill은 작동하지만 kill은 작동하지 않는 이유
file="${@:1:1}"
params="${@:2}"
echo $file
echo $params
while true ; do
echo +Master $BASHPID
(
echo ++Slave $BASHPID
running=''
stat=''
while true; do
echo RUNNING $running
echo +++Cycle $BASHPID
sleep 1
new_stat="`stat --printf='%Y' "$file"`"
! [ "$stat" = "$new_stat" ] && {
# HERE IS MY ISSUE I DO NOT UNDERSTAND WHY kill -- -"$running" reports process not found . Especially when doing ps f clearly shows both the proper hierarchy and that the PID is as expected .
kill -0 "$running" && pkill -TERM -P "$running"
stat="$new_stat"
echo CHANGE
( /bin/bash "$file" ${params[@]} ) &
running=$!
}
done &
wait
echo Slave/Cycle clear
) &
wait
done
trap "-" EXIT
#stat="`ls`"
파일 실행
#!/bin/bash
echo ++++sub $BASHPID
(
while true; do
echo +++++tick $BASHPID
sleep 5
done
) &
wait
echo SUB/tick clear