問題

問題

我有這個非常簡單的腳本:

#!/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.

所以一切似乎都正常,除了每次運行它時,系統無法關閉或重新啟動:

斷電時系統卡住

它就卡在那裡-image-,並且不做任何其他事情。

我運行的是 Ubuntu Mini 16.04.4 LTS x86_64,更新到最新,沒有任何修改。

答案1

首先感謝大家幫忙查找問題,特別是甜點的貢獻

為什麼您認為關閉問題與腳本有關?這實際上不太可能 - 卸載第一行中提到的驅動器似乎是問題所在。 〜甜點

這種行為似乎是 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 迷你 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、 、 ...)時,機器會以某種方式卡住。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 安裝的資料夾之外運行命令似乎才能幫助系統卸載它並允許其關閉。

也可以先卸載它,然後存取已掛載的根資料夾,這種情況似乎不影響,系統也會斷電。

相關內容