Проблема

Проблема

У меня есть довольно простой скрипт:

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

Прежде всего, спасибо всем за помощь в поиске проблемы, особенновклад десерта:

Почему вы думаете, что проблема с выключением как-то связана со скриптом? Это на самом деле очень маловероятно – скорее всего, проблема в размонтировании диска, упомянутого в первой строке. ~dessert

Такое поведение, похоже, является своего рода ошибкой в ​​пакетах 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 Mini 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

На данный момент все работает отлично.


Проблема в том, что машина каким-то образом зависает при запуске скрипта и любой команды типа poweroff ( poweroff, reboot, ...) внутри смонтированной папки NFS.

Я провел следующие тесты:

Тест 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, по-видимому, помогает системе отмонтировать ее и разрешить ей завершить работу.

Также можно сначала размонтировать его и получить доступ к корневой папке, которая была смонтирована; этот сценарий, по-видимому, не повлияет, и система также выключится.

Связанный контент