
여러 개의 script.sh 인스턴스가 병렬로 실행되고 동일한 작업을 수행하며 백그라운드에서 실행됩니다.
실행 시 현재 실행 중인 모든 스크립트를 종료하는 함수를 사용하려고 합니다.
예를 들어 ./script.sh -start 는 스크립트를 시작하고(여러 스크립트를 병렬로 실행할 수 있음) ./script.sh -kill 을 실행하면 스크립트의 모든 인스턴스가 종료됩니다.
f() {
procName=`basename $0`
pidsToKill=`ps -ef | grep $procName | grep -v grep | awk '{ print $2 }'`
if [[ $pidsToKill ]]; then
for i in $pidsToKill; do
kill -9 $i
done
echo "Killed running scripts."
else
echo "No opened scripts to kill"
fi
}
어떤 이유로 여러 스크립트가 종료되거나 오류가 반환되는 경우도 있습니다.
이 문제에 대한 해결책을 찾았지만 왜 이것이 작동하지 않는지 알고 싶습니다. 어떤 아이디어가 있나요?
답변1
대본이 자살할 수도 있습니다. 별도의 하위 쉘에서 for 루프를 실행한 ( for i in $pidsToKill; do kill -9 $i; done; echo All dead. ) &
다음 스크립트를 종료할 수 있습니다.