如果没有响应则杀死子进程

如果没有响应则杀死子进程

环境:Linux / 脚本:Bash

我正在从数据库中查询大约 100 条记录,对于每条记录,我都使用 PerformTestWrapper 在后台执行 SFTP 测试/检查。

基本上,我想要实现的是在一分钟结束时,完成尚未完成的待处理流程:

  • 对孩子发出杀死信号
  • 子进程将捕获此终止信号并进行后处理,例如清理其文件。

目的是跨 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 

相关内容