今天脚本中写了个for循环kill杀死进程解除占用
部分代码:(有问题)
H=`lsof /mnt | awk '{print $02}' | wc -l`
Print "占用[$i]的进程数为[$(($H-1))]"
for (( o = 2; o <= $H ; o++ )); do
PDI=`lsof /mnt | awk '{print $02}' | sed -n $o'p'`
# echo $PDI
kill -9 $PDI
# echo $o
done
运行后发现挂载硬盘依旧被占用,无法卸载,遂查看问题
发现程序进入循环,但只杀死了一个进程,注意到两个echo中有空,遂分析代码
H=`lsof /mnt | awk '{print $02}' | wc -l`
Print "占用[$i]的进程数为[$(($H-1))]"
for (( o = 2; o <= $H ; o++ )); do
PDI=`lsof /mnt | awk '{print $02}' | sed -n 2'p'` # 杀死进程后 行号上移
# echo $PDI
kill -9 $PDI
# echo $o
done
最终确认问题,kill杀死进城后,下个进程行号会上移,遂PDI变量无法获取到值,导致进程无法被杀死