Tengo este script bastante simple:
#!/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
Lo que realmente funciona, devuelve la siguiente línea:
I am in ., in xenial with the x86_64 arch.
Entonces todo parece estar bien, excepto que cada vez que lo ejecuto, el sistema no puede apagarse ni reiniciarse:
Se queda atascado ahí mismo -imagen-, y no haces nada más.
Estoy ejecutando un Ubuntu Mini 16.04.4 LTS x86_64, actualizado a la última versión, sin modificaciones.
Respuesta1
En primer lugar, gracias a todos por ayudar a encontrar el problema, especialmente a losaporte de postre:
¿Por qué crees que el tema del cierre tiene algo que ver con el guión? En realidad, eso es muy poco probable: el problema parece ser desmontar la unidad mencionada en la primera línea. ~postre
Este tipo de comportamiento parece ser una especie de error en los paquetes NFS ( nfs-common
), así que he estado probando cómo reproducirlo y una manera de evitarlo.
Para reproducirlo he utilizado lo siguiente:
Anfitrión
- KDE Neon 5.12 x86_64 (basado en Ubuntu 16.04 LTS)(actualizado y actualizado a la última versión)
openssh-client
(versión1:7.2p2-4ubuntu2.4
)nfs-kernel-server
(versión1:1.2.8-9ubuntu12.1
)virtualbox-5.2
(versión5.2.12-122591~Ubuntu~xenial
) -para virtualizar al huésped
Invitado
- Ubuntu Mini 16.04.4 LTS x86_64(actualizado y actualizado a la última versión) -No se ha instalado ninguna interfaz ni paquete adicional en esta máquina.
openssh-server
(versión1:7.2p2-4ubuntu2.4
)nfs-common
(versión1:1.2.8-9ubuntu12.1
)
El problema
El problema parece estar relacionado con la carpeta montada en NFS dentro de la máquina invitada. Este invitado está preparado /etc/fstab
para montar automáticamente la carpeta compartida NFS del host.
Digamos:
# 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
Todo en este punto funciona perfectamente bien.
El problema es que la máquina se atasca de alguna manera mientras ejecuta un script y cualquier comando de tipo apagado ( poweroff
,, reboot
...) dentro de una carpeta montada en NFS.
He realizado las siguientes pruebas:
Prueba 1: correrpoweroff
ADENTROla carpeta montada en NFS
cd /data/nfs/folder1
poweroff
# OK
Prueba 2: ejecutar un script compartido ypoweroff
ADENTROla carpeta montada en NFS
cd /data/nfs/
./script.sh
poweroff
# GETS STUCK ! (the snapshot in the question)
Prueba 3: ejecutar un script compartido ypoweroff
AFUERAla carpeta montada en NFS
cd /data/nfs/
./script.sh
cd /data
poweroff
# OK
Prueba 4: ejecutar un script compartido, desmontar la carpeta montada en NFS y ejecutar elpoweroff
ADENTROla carpeta utilizada para montar NFS.
cd /data/nfs/
./script.sh
cd /data
umount ./nfs
cd ./nfs
poweroff
# OK
La solución
Después de ejecutar el script, el servicio NFS parece estar ocupado con cualquier proceso en segundo plano, y solo ejecutar el poweroff
comando fuera de la carpeta montada en NFS parece ayudar al sistema a desmontarlo y permitir que se apague.
También es posible desmontarlo primero y acceder a la carpeta raíz que se ha montado; este escenario parece no afectar y el sistema también se apagará.