문제

문제

다음과 같은 매우 간단한 스크립트가 있습니다.

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

따라서 실행할 때마다 시스템이 전원을 끄거나 재부팅할 수 없다는 점을 제외하면 모든 것이 괜찮은 것 같습니다.

전원이 꺼지면 시스템이 멈춤

이미지- 바로 거기에 멈춰서 다른 작업은 수행하지 않습니다.

저는 아무런 수정 없이 최신으로 업데이트된 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) -게스트 가상화용

손님

  • 우분투 미니 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-kind 명령( 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 서비스는 백그라운드 프로세스로 인해 바쁜 것으로 보이며 poweroffNFS 마운트 폴더 외부에서 명령을 실행해야만 시스템을 마운트 해제하고 종료하는 데 도움이 되는 것 같습니다.

먼저 마운트를 해제하고 마운트된 루트 폴더에 액세스할 수도 있습니다. 이 시나리오는 영향을 미치지 않는 것으로 보이며 시스템 전원도 꺼집니다.

관련 정보