다음과 같은 매우 간단한 스크립트가 있습니다.
#!/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 서비스는 백그라운드 프로세스로 인해 바쁜 것으로 보이며 poweroff
NFS 마운트 폴더 외부에서 명령을 실행해야만 시스템을 마운트 해제하고 종료하는 데 도움이 되는 것 같습니다.
먼저 마운트를 해제하고 마운트된 루트 폴더에 액세스할 수도 있습니다. 이 시나리오는 영향을 미치지 않는 것으로 보이며 시스템 전원도 꺼집니다.