환경: Linux / 스크립트: Bash
데이터베이스에서 약 100개의 레코드를 쿼리하고 있으며 각 레코드에 대해 PerformTestWrapper를 사용하여 백그라운드에서 SFTP 테스트/검사를 수행하고 있습니다.
기본적으로 제가 달성하고 싶은 것은 1분이 지나면 아직 완료되지 않은 대기 중인 프로세스가 완료되는 것입니다.
- 아이를 죽이라는 신호를 보내세요
- 하위 프로세스는 이 종료 신호를 포착하고 파일 정리와 같은 사후 처리를 수행합니다.
목적은 100개의 서버에 걸쳐 SFTP 검사를 수행하고 응답이 없거나 세션이 1분 이상 중단되면 실패하는 것입니다.
내가 겪고 있는 문제:
- while 루프 외부에 CHILD PID를 도입할 수 없습니다. 변수의 범위는 while 루프 자체로 끝납니다.
- 종료 및 사후 처리를 위해 백그라운드에서 실행되는 함수 호출에 신호를 보내는 방법.
.
isql -S$APPQUERY -U$APPUSER -P$APPPWD -s"|" -w8192 <<EO_ISQL | tail -n +3 |
set nocount on
select Col1, Col2, Col3 from TableName
go
EO_ISQL
while IFS="|" read dummy Id Col1 Col2 Col3
do
performTestWrapper &
export CHILDPID="$CHILDPID $!"
done
sleep 60
echo $CHILDPID # This is Blank