"통계"는 명령은 다소 청소기 방법입니다
rpcinfo -t remote.system.net nfs > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo Remote NFS share available.
fi
추가 2013-07-15T14 : 원격 NFS 공유를 사용할 수 있는지 여부를 감지 할 수있는 rpcinfo를 사용할 수 있습니다, 또한
statresult=`stat /my/mountpoint 2>&1 | grep -i "stale"`
if [ "${statresult}" != "" ]; then
#result not empty: mountpoint is stale; remove it
umount -f /my/mountpoint
fi
: 31 : 18-05 : 00 :
부실 마운트 포인트를 인식해야하는 스크립트 작업도 진행하면서이 문제에 대해 더 자세히 살펴 보았습니다.
read -t1 < <(stat -t "/my/mountpoint")
if [ $? -eq 1 ]; then
echo NFS mount stale. Removing...
umount -f -l /my/mountpoint
fi
"-t1 읽어 one of the replies에서 영감을"부실 NFS 마운트를 감지 할 수있는 좋은 방법이 있나요 ", 나는 다음은 bash는 특정 마운트 지점의 실효를 확인하는 가장 신뢰할 수있는 방법이 될 것 같아요 "어떤 이유로 든 stat 명령이 응답하지 않으면 서브 쉘에서 안정적으로 타임 아웃을 구성하십시오.
추가 2013-07-17T12 : 03 : 23-05 : 00 :
read -t1 < <(stat -t "/my/mountpoint")
비록 작품, 마운트 지점이 오래된 경우 그 오류 출력을 소거하는 방법이있을 것 같지 않습니다. 서브 쉘 또는 명령 행 끝에 > /dev/null 2>&1
을 추가하면 명령 쉘이 종료됩니다. 간단한 테스트를 사용하면 if [ -d /path/to/mountpoint ] ; then ... fi
도 작동하며 스크립트에서 사용하는 것이 좋습니다. 많은 테스트를 거친 후 사용이 끝났습니다.
추가 2013-07-19T13 : 51 : 27-05 : 00 :
합계 (또는있는 rpcinfo)의 출력을 음소거에 대한 추가 세부 사항을 제공하는 내 질문에 "How can I use read timeouts with stat?"에 대한 응답 대상을 사용할 수 없습니다 자체적으로 시간 초과되기 전에 명령이 몇 분 동안 중단됩니다. 부실 마운트 포인트를 탐지하려면 [ -d /some/mountpoint ]
을 사용할 수 있지만 rpcinfo에 대한 유사한 대안은 없으므로 read -t1
리디렉션을 사용하는 것이 가장 좋습니다. 서브 쉘의 출력은 2> & -으로 음소거 될 수 있습니다. 여기 CodeMonkey's response의 예는 다음과 같습니다
mountpoint="/my/mountpoint"
read -t1 < <(stat -t "$mountpoint" 2>&-)
if [[ -n "$REPLY" ]]; then
echo "NFS mount stale. Removing..."
umount -f -l "$mountpoint"
fi
아마도 지금이 질문에 대해 충분한 답변이됩니다 :).
내 스크립트 ** nfs_automount ** [GitHub에서 사용할 수 있음] (https://github.com/vwal/nfs_automount)에서 부실 NFS 마운트 지점 감지를 사용했습니다. – Ville
좋은 답변입니다. read -t1 <(stat -t "$ MOUNT_DIR"2> & -)'가'142'의 반환 값을 제공하는 것을 보았습니다. 그래서'[! $? -eq 0]'을 사용하는 것이 좋습니다. – psiphi75
다른 점 :'-t1 <(stat -t "$ mountpoint"2> &&)'는 마운트 된 폴더에 열려있는 파일 핸들을 남긴다. 그러므로'-l' 플래그를 사용하지 않으면 마운트 옵션이 실패합니다. 대신에'timeout 1 stat -t "$ mountpoint">/dev/null'을 사용할 수 있습니다. 이것은'stat' 명령을 죽일 것이고 따라서 그것은 열린 파일 핸들을 죽일 것입니다. – psiphi75