環境: 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