El problema

El problema

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:

Sistema atascado cuando se apaga

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ón 1:7.2p2-4ubuntu2.4)
  • nfs-kernel-server(versión 1:1.2.8-9ubuntu12.1)
  • virtualbox-5.2(versión 5.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ón 1:7.2p2-4ubuntu2.4)
  • nfs-common(versión 1: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/fstabpara 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 poweroffcomando 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á.

información relacionada