Ich habe dieses ziemlich einfache Skript:
#!/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
Das funktioniert tatsächlich und gibt die folgende Zeile zurück:
I am in ., in xenial with the x86_64 arch.
Also scheint alles in Ordnung zu sein, außer dass das System jedes Mal, wenn ich es ausführe, weder ausgeschaltet noch neu gestartet werden kann:
Es bleibt genau dort hängen -Bild-, und tun Sie nichts anderes.
Ich verwende ein Ubuntu Mini 16.04.4 LTS x86_64, auf die neueste Version aktualisiert, ohne jegliche Änderungen.
Antwort1
Zunächst einmal vielen Dank an alle, die geholfen haben, das Problem zu finden, insbesondere an dieBeitrag des Nachtischs:
Warum glauben Sie, dass das Herunterfahren etwas mit dem Skript zu tun hat? Das ist eigentlich sehr unwahrscheinlich – das Aushängen des in der ersten Zeile erwähnten Laufwerks scheint eher das Problem zu sein. ~dessert
Bei diesem Verhalten scheint es sich um eine Art Fehler in den NFS-Paketen ( nfs-common
) zu handeln, daher habe ich getestet, wie man es reproduzieren und vermeiden kann.
Zur Reproduktion habe ich Folgendes verwendet:
Gastgeber
- KDE Neon 5.12 x86_64 (basierend auf Ubuntu 16.04 LTS)(aktualisiert und auf den neuesten Stand gebracht)
openssh-client
(Ausführung1:7.2p2-4ubuntu2.4
)nfs-kernel-server
(Ausführung1:1.2.8-9ubuntu12.1
)virtualbox-5.2
(Ausführung5.2.12-122591~Ubuntu~xenial
) -zur Virtualisierung des Gastes
Gast
- Ubuntu Mini 16.04.4 LTS x86_64(aktualisiert und auf den neuesten Stand gebracht) -Auf dieser Maschine ist weder eine Schnittstelle noch ein zusätzliches Paket installiert
openssh-server
(Ausführung1:7.2p2-4ubuntu2.4
)nfs-common
(Ausführung1:1.2.8-9ubuntu12.1
)
Das Problem
Das Problem scheint mit dem per NFS gemounteten Ordner im Gastcomputer zusammenzuhängen. Dieser Gast ist darauf vorbereitet, /etc/fstab
den per NFS freigegebenen Ordner des Hosts automatisch zu mounten.
Sagen wir:
# 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
An diesem Punkt funktioniert alles einwandfrei.
Das Problem besteht darin, dass die Maschine beim Ausführen eines Skripts und eines beliebigen Poweroff-Befehls ( poweroff
, reboot
, ...) in einem über NFS gemounteten Ordner irgendwie hängen bleibt.
Ich habe folgende Tests durchgeführt:
Test 1: Laufenpoweroff
INNENder per NFS gemountete Ordner
cd /data/nfs/folder1
poweroff
# OK
Test 2: Ausführen eines freigegebenen Skripts undpoweroff
INNENder per NFS gemountete Ordner
cd /data/nfs/
./script.sh
poweroff
# GETS STUCK ! (the snapshot in the question)
Test 3: Ausführen eines freigegebenen Skripts undpoweroff
DRAUSSENder per NFS gemountete Ordner
cd /data/nfs/
./script.sh
cd /data
poweroff
# OK
Test 4: Ausführen eines freigegebenen Skripts, Unmounten des NFS-gemounteten Ordners und Ausführen despoweroff
INNENder Ordner, der zum Mounten von NFS verwendet wird.
cd /data/nfs/
./script.sh
cd /data
umount ./nfs
cd ./nfs
poweroff
# OK
Die Lösung
Nach dem Ausführen des Skripts scheint der NFS-Dienst mit einem Hintergrundprozess beschäftigt zu sein, und nur das Ausführen des poweroff
Befehls außerhalb des über NFS bereitgestellten Ordners scheint dem System zu helfen, ihn auszuhängen und herunterzufahren.
Es ist auch möglich, es zuerst auszuhängen und dann auf den gemounteten Stammordner zuzugreifen. Dieses Szenario scheint keine Auswirkungen zu haben und das System wird ebenfalls ausgeschaltet.