挂载失败且不超时

挂载失败且不超时

我有一个脚本,每 30 分钟运行一次,检查 /mnt/controlurg 是否已挂载。如果没有,它会尝试挂载它并从中获取一些文件(它是 Windows 驱动器)。在 12.04 之前我没有遇到问题,但现在当脚本无法挂载(出于任何原因)远程驱动器时,挂载命令不会结束并保持为后台进程。更糟糕的是,每 30 分钟就会创建一个新的僵尸后台挂载进程,并且 CPU 平均负载越来越高(现在是 44%!!)。

检查正在运行的进程我得到多个类似的条目:

root     29458 29420  0 08:35 ?        00:00:00 mount /mnt/controlurg
root     29459 29458  0 08:35 ?        00:00:00 /sbin/mount.cifs //controlurg/c$ /mnt/controlurg -o rw,noauto,user=root,passwd=example,utf8
  • 我怎样才能终止该进程?“kill -9 29459”不起作用。
  • 为什么这些进程不会超时?我如何才能自动终止这些失败的挂载?

/opt/scripts/sftpcont.shl 中有趣的片段:

cat $SCRIPT/computers.dat | while read line
do
echo `date "+%Y/%m/%d %H:%M:%S"` ": Copying to ${line} with samba"
isalive=`ping -q -c1 $line| grep "1 received" |wc -l`
if [ $isalive!= "0" ]
 then
  mount /mnt/$line
  rm /mnt/$linea/contingenciasap/*
  cp $SCRIPT/fitxers/sapfitcrip.zip /mnt/$line/contingenciasap
  umount /mnt/$line
fi
done

谢谢

答案1

如果你能展示一下你的脚本就太好了。但无论如何,你必须使用 exit 命令,例如:

mount <partition> /mnt/controlurg || exit 1

此命令只会停止运行脚本。您可以显示一些消息(或写入日志文件),例如:

mount <partition> /mnt/controlurg || eval 'echo "Error mounting partition" 1>&2; exit 1'

mount <partition> /mnt/controlurg || eval 'echo "Error mounting partition\n" >> mount.log; exit 1'

要终止所有进程,请使用killall命令。

相关内容