2010-11-18 30 views

Trả lời

4

Bạn có thể kiểm tra loại hệ thống tệp.

 
$ stat -f -c '%T'/
xfs 
$ stat -f -c '%T' /dev/shm 
tmpfs 

Bạn cũng có thể kiểm tra xem thư mục có phải là điểm gắn kết hay không bằng cách so sánh thiết bị của nó với thiết bị của cha mẹ.

 
$ stat -c '%D'/
901 
$ stat -c '%D' /home 
fe01 
$ stat -c '%D' /home/$USER 
fe01 
1

Bạn có thể sử dụng df, hãy thử man df.

df 'directory' | awk '{print $1, $6}' 

sẽ cung cấp cho bạn STH thích:

Filesystem Mounted 
/dev/sda5 'some_dir' 

sau đó bạn có thể thêm một tấm séc nếu thư mục 'some_dir' là giống như 'your_dir', và hệ thống tập tin là tương tự như của bạn.

2

Something như thế này, trong khi hackish, nên làm các trick:

FS_TO_CHECK="/dev" # For example... change this to suit your needs. 

if cat /proc/mounts | grep -F " $FS_TO_CHECK " > /dev/null; then 
    # Filesystem is mounted 
else 
    # Filesystem is not mounted 
fi 
+0

Đúng, đủ ... – cdhowie

0

Kiểm tra/proc/mounts. Nếu bạn grep trên tên hệ thống tập tin và đường dẫn bạn muốn nó được gắn kết (thậm chí có thể là một dòng cụ thể với tất cả các tùy chọn được bao gồm), bạn có thể biết hệ thống tập tin có được gắn kết hay không.

if [ "`grep "tmpfs /lib/init/rw tmpfs rw,nosuid,mode=755 0 0" /proc/mounts`" != "" ] 
then 
    echo Mounted. 
else 
    echo Not mounted. 
fi 
+0

Một ảo -1 cho việc sử dụng backticks ở một vị trí không tầm thường. – Sorpigal

+0

'if grep ...' - không cần dấu ngoặc đơn. –

37

Có một công cụ đặc biệt cho việc này: mountpoint (1)

if mountpoint -q "$directory" ; then 
    echo it is a mounted mountpoint 
else 
    echo it is not a mounted mountpoint 
fi 

Và bạn thậm chí không cần phải cạo dây để làm điều đó!

Lưu ý rằng tôi tìm thấy công cụ này trong gói initscripts của Debian. Làm thế nào có sẵn nó là ở nơi khác không phải là một cái gì đó tôi có thể bình luận về.

+0

Tôi thấy rằng điểm gắn kết là một phần của gói Gentoo Linux sys-apps/util-linux cùng với nhiều hơn, gắn kết, umount, dmesg và một loạt các công cụ hệ thống khác. Tôi có thể nói đây là giải pháp sạch nhất. – cvolny

+1

@cvolny: Nó chỉ ra rằng 'mountpoint' là một phần của util-linux (đặc biệt là phần sys-utils) và có lẽ có sẵn cách này hay cách khác trong hầu hết các bản phân phối Linux. Tuy nhiên, nó không phải là một phần của GNU và không có khả năng có sẵn trên các hệ thống không phải Linux. – Sorpigal

+0

Dường như nó đến cổ phiếu với RHEL 7.1 (err. Ok, tôi đã cài đặt một số công cụ trên đây.Vì vậy, tôi không thể chắc chắn về điều đó) –

0
if mount -l -t tmpfs | grep "on $directory " 
then 
    echo "it's mounted" 
fi 
2

Tôi biết chủ đề này cũ, nhưng tại sao không chỉ sử dụng df và grep cho đường dẫn cần thiết đến điểm gắn kết? tức là như sau:

df /full/path | grep -q /full/path 

grep trả về true nếu được gắn, sai nếu không. Vì vậy, chúng ta chỉ cần kiểm tra nó như thế này:

df /mnt/myUSBdisk | grep -q /mnt/myUSBdisk && echo "Mounted" || echo "Not mounted" 

Peasy dễ dàng ...

+0

Tôi quyết định bỏ phiếu này bởi vì mặc dù điểm gắn kết sẽ dễ dàng hơn cho câu hỏi được đặt ra, câu trả lời này linh hoạt hơn. Ví dụ, một số distro linux gắn tmpfs bộ nhớ chia sẻ tại/tmp trong khi những người khác sử dụng/dev/shm hoặc cả hai. Câu trả lời này làm cho nó dễ dàng nhận ra bạn có thể nói nếu/tmp được chia sẻ bộ nhớ hoặc không theo cùng một cách: 'df/tmp | grep -q tmpfs && echo "Bộ nhớ chia sẻ" || echo "Not Shared Memory' Hoặc, nhiều hơn đến điểm' df/tmp | grep -q tmpfs && tmp =/tmp || tmp =/dev/shm' –

-1

mountpoint là nhiều hơn nữa thanh lịch và đang trong sysvinit-công cụ CentOS 6 +++

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