CentOS 如果挂载了nfs服务器,当调用命令或按钮关闭计算机时,有可能出现:umount: /xx_path : device is busy
导致操作系统无法关闭。
由于项目需要,要求 无论调用 关机命令(shutdown 、 init 0)或 重启命令(reboot 、init 6),点击 关机按钮 或 重启按钮后, 在即使有无法卸载的 nfs的情况,也能够正常关闭或重启服务器。
分几步实现:
1. 创建 关机前执行的脚本文件:scriptname
stop()
{
umount -lf /mount_path/*
}
case "$1" in
stop)
stop
;;
esac
2. 把 scriptname 脚本放到 /etc/init.d目录下,并赋予该脚本执行权限
并在 /etc/rc0.d 和 /etc/rc6.d 目录下 创建软连接,
chmod 777 /etc/init.d/scriptname
ln -s /etc/init.d/scriptname /etc/rc0.d/K11scriptname
ln -s /etc/init.d/scriptname /etc/rc6.d/K11scriptname
3. 创建lock 文件
touch /var/lock/subsys/scriptname
4. 需要注意的是 lock文件,关机后,就会被删除,也就是说 它只能使用一次。如果想保持始终关机或重启能够执行 scriptname 脚本,就必须保证 关机或重启前 lock文件文在。
5. 上述问题的解决办法:每次开机时生成 lock文件。如果把 该脚本制作成完整的服务程序,并打包成rpm,则在安装时,会提示与chkconfig 冲突,无法正确安装,如果添加 --force 参数,可以安装。