2011-01-28 28 views
5

df -t nfs $ directoryLàm thế nào để biết (trong sh) cho dù một thư mục được gắn trên NFS

trả về hai dòng đầu ra nếu thư mục được NFS gắn và một dòng nếu không.

Một số phiên bản của df cho trạng thái thoát 1 nếu nó không được NFS gắn, nhưng GNU coreutils 5.3.0 không ...

if [ `df -t nfs . | wc -l` = 2 ]; 

cảm thấy thanh nha và các đồng nghiệp nói rằng nó không kiểm tra đầy đủ các lỗi. Có cách nào tốt hơn để làm điều này?

+0

Tôi đã thử một vài tùy chọn, nhưng bạn vẫn có vẻ thanh lịch hơn với tôi. Các đồng nghiệp của bạn có đề cập đến các lỗi mà sẽ bỏ qua phương pháp này không? 1 cho một nỗ lực tốt đẹp. –

+0

OK, tôi đã tìm thấy một sự cố. Nếu cột đầu ra đầu tiên quá dài (ví dụ: 'nfs_server:/long/mount/point'), thì' df' sẽ tách đầu ra trên hai dòng và bạn kết thúc bằng 'wc -l = 3'. Dễ dàng giải quyết bằng cách thay đổi giải pháp của bạn thành 'if [.... -gt 1]'. –

+0

@ShawnChin: Nếu bạn áp dụng tùy chọn '--portability' /' -P', nó sẽ không bao bọc các dòng dài. Hoàn hảo cho chế biến máy. (Thử nghiệm với 'df (GNU coreutils) 7.4') – RobM

Trả lời

0

Bạn luôn có thể kiểm tra mtab nó giữ một hồ sơ của tất cả các hệ thống tập tin được gắn trong một flatfile, nếu bạn sử dụng strace và nhìn đó là tất cả df nào anyway. Tôi cho rằng bạn cũng có thể sử dụng/proc/mounts nếu bạn chạy nó trong Linux.

+0

Sử dụng'/etc/mtab' sẽ yêu cầu phân tích/xử lý nhiều hơn. Cũng sẽ thất bại nếu thư mục đích bao gồm một liên kết sym đến một điểm gắn kết. –

Các vấn đề liên quan