응답이 없으면 하위 프로세스를 종료합니다.

응답이 없으면 하위 프로세스를 종료합니다.

환경: Linux / 스크립트: Bash

데이터베이스에서 약 100개의 레코드를 쿼리하고 있으며 각 레코드에 대해 PerformTestWrapper를 사용하여 백그라운드에서 SFTP 테스트/검사를 수행하고 있습니다.

기본적으로 제가 달성하고 싶은 것은 1분이 지나면 아직 완료되지 않은 대기 중인 프로세스가 완료되는 것입니다.

  • 아이를 죽이라는 신호를 보내세요
  • 하위 프로세스는 이 종료 신호를 포착하고 파일 정리와 같은 사후 처리를 수행합니다.

목적은 100개의 서버에 걸쳐 SFTP 검사를 수행하고 응답이 없거나 세션이 1분 이상 중단되면 실패하는 것입니다.

내가 겪고 있는 문제:

  1. while 루프 외부에 CHILD PID를 도입할 수 없습니다. 변수의 범위는 while 루프 자체로 끝납니다.
  2. 종료 및 사후 처리를 위해 백그라운드에서 실행되는 함수 호출에 신호를 보내는 방법.

.

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 

관련 정보