问题

问题

我有这个非常简单的脚本:

#!/bin/sh

# Variables
directorio=$(dirname "${0}")
distribucion=$(lsb_release -s -c)
arquitectura=$(uname -m)

echo "I am in ${directorio}, in ${distribucion} with the ${arquitectura} arch."

exit 0

它确实有效,它返回以下行:

I am in ., in xenial with the x86_64 arch.

所以一切似乎都正常,除了每次我运行它时,系统无法关机或重新启动:

关机时系统卡住

它就卡在那里 - 图像 -,并且无法执行任何其他操作。

我正在运行 Ubuntu Mini 16.04.4 LTS x86_64,已更新至最新版本,没有任何修改。

答案1

首先,感谢大家帮忙发现问题,特别是甜点贡献

您为什么认为关机问题与脚本有关?这实际上不太可能——卸载第一行中提到的驱动器似乎是问题所在。~dessert

这种行为似乎是 NFS 包中的一种错误(nfs-common),所以我一直在测试如何重现这种情况以及如何避免它。

为了重现它我使用了以下内容:

主持人

  • KDE Neon 5.12 x86_64(基于 Ubuntu 16.04 LTS)(更新升级至最新)
  • openssh-client(版本1:7.2p2-4ubuntu2.4
  • nfs-kernel-server(版本1:1.2.8-9ubuntu12.1
  • virtualbox-5.2(版本5.2.12-122591~Ubuntu~xenial) -用于虚拟化客户机

客人

  • Ubuntu Mini 16.04.4 LTS x86_64(更新升级至最新)-此机器未安装任何接口或额外包
  • openssh-server(版本1:7.2p2-4ubuntu2.4
  • nfs-common(版本1:1.2.8-9ubuntu12.1

问题

问题似乎与客户机内的 NFS 挂载文件夹有关。此客户机已准备好/etc/fstab自动挂载主机的 NFS 共享文件夹。

假设:

# Host
/data/shared  davdriver:davdriver  777
       |
       +----  /folder1    davdriver:davdriver  777
       +----  /folder2    davdriver:davdriver  777
       +----  /script.sh  davdriver:davdriver  777  #The script mentioned in the question

# Guest
/data/nfs     davdriver:davdriver  777  #fstab: nofail,auto,noatime,nolock,intr,tcp,actimeo=1800

到目前为止,一切都运行正常。


问题是,在NFS 安装文件夹内运行脚本和任何 poweroff 类型的命令( poweroff,, ...)时,机器会以某种方式卡住。reboot

我做了以下测试:

测试 1:运行poweroff 里面NFS 挂载文件夹

cd /data/nfs/folder1
poweroff
# OK

测试 2:运行共享脚本并poweroff 里面NFS 挂载文件夹

cd /data/nfs/
./script.sh
poweroff
# GETS STUCK ! (the snapshot in the question)

测试 3:运行共享脚本并poweroff 外部NFS 挂载文件夹

cd /data/nfs/
./script.sh
cd /data
poweroff
# OK

测试 4:运行共享脚本,卸载 NFS 挂载文件夹,并运行poweroff 里面用于挂载 NFS 的文件夹。

cd /data/nfs/
./script.sh
cd /data
umount ./nfs
cd ./nfs
poweroff
# OK

解决方案

运行脚本后,NFS 服务似乎正忙于任何后台进程,并且只有在poweroffNFS 挂载文件夹之外运行命令似乎才能帮助系统卸载它并允许其关闭。

也可以先将其卸载并访问已挂载的根文件夹,这种情况似乎不会产生影响,系统也会关闭。

相关内容