3

getmpoint任意のファイル名からマウントポイントを返すスクリプト (と呼ばれる) を作成したい。

最初のアイデアは、次のようなものです。出力フォームのdf解析または解析fstabは、見た目ほど簡単ではありません。たとえば、次のような理由があります。

getmpoint ../../../some/path/tmp/somefile
getmpoint /tmp/somesymlink   #and want get the mountpoint where the real file is
getmpoint /

(デバイスを取得する)を使用していくつかのアイデアがstatありますが、道に迷っています。これを解決する方法についていくつかの指針が必要です。

別の質問は、statコマンドがFreebsd-statLinux-statで異なるということです。ここに移植可能な方法はありますか?

同様に、次のことはどうでしょうか。

getmpoint /some/real/path/up/to/here/but/nonexistent_file

ファイルの存在なしで、パスからのみマウントポイントを取得するとよいでしょうstat

何かアドバイスはありますか?(おそらく自分でスクリプトを作成できますが、その方法についてのガイドが必要です...)

4

1 に答える 1

3

これを試して:

getmpoint.sh、ファイル名が param であることを期待

#!/bin/bash

for path
do
    orig=$path

    #find the existing path component
    while [ ! -e "$path" ]
    do
        path=$(dirname "$path")
    done

    #get a real file from a symlink
    [ -L "$path" ] && path=$(readlink "$path")

    # use "portable" (df -P)  - to get all informatons
    # 512-blocks      Used Available Capacity  Mounted on
    read s512 used avail capa mounted <<< $(df -P "$path" | awk '{if(NR==2){ print $2, $3, $4, $5, $6}}')

    echo "Filename: $orig"
    echo "Mounted: $mounted"
    echo "Available blocks: $avail"
done
于 2013-04-23T21:19:52.320 に答える