我有這個非常簡單的腳本:
#!/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 服務似乎忙於任何後台進程,只有在poweroff
NFS 安裝的資料夾之外運行命令似乎才能幫助系統卸載它並允許其關閉。
也可以先卸載它,然後存取已掛載的根資料夾,這種情況似乎不影響,系統也會斷電。