![如果没有响应则杀死子进程](https://linux22.com/image/130543/%E5%A6%82%E6%9E%9C%E6%B2%A1%E6%9C%89%E5%93%8D%E5%BA%94%E5%88%99%E6%9D%80%E6%AD%BB%E5%AD%90%E8%BF%9B%E7%A8%8B.png)
环境:Linux / 脚本:Bash
我正在从数据库中查询大约 100 条记录,对于每条记录,我都使用 PerformTestWrapper 在后台执行 SFTP 测试/检查。
基本上,我想要实现的是在一分钟结束时,完成尚未完成的待处理流程:
- 对孩子发出杀死信号
- 子进程将捕获此终止信号并进行后处理,例如清理其文件。
目的是跨 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