/var/log
の一部であると/dev/sda2
仮定します。/var/spool
/var
/
/dev/sda1
今こんなコマンドを出したい
$ sudo get_mountpoint_of /var/spool
正解を得る。
/var/spool is part of / and is mounted on /dev/sda1
答え1
Linuxシステムでは、次のことができます。
findmnt -nvoSOURCE -T /*some/path
...参照したファイルのソースデバイスのみを印刷します/*some/path
。
オプション分析:
-n
- 列ヘッダーの省略
-oSOURCE
のみ選択
SOURCE
デバイス出力列(他の列もたくさんあります),TARGET
マウントポイント列を一覧表示するには、追加してください。
-v
- 省略
[...]
可能な部分/dev/device[/bindmnt]
結果
- 省略
-T
- 報告する前に、有効なマウントポイントが見つかるまで、その引数が
findmnt
逆方向に処理されることを示します。--target
- 報告する前に、有効なマウントポイントが見つかるまで、その引数が
より多くの情報を知りたい場合:
man findmnt
答え2
これを行う必要はありませんsudo
。開始点に対して 'df'を実行してから、出力からマウントポイントを読み取るスクリプトを作成できます。マウントポイントが「/」でない場合、スクリプトは繰り返しどこにあるかを尋ねます。それインストールされました。
たとえば、私が持っているマシンには次のものがあります。
$ df /var/log
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/disk/by-uuid/8a1efcd1-0d32-4674-aa7a-c24c2cd924fd 19751804 12437492 6310948 67% /
通常、スクリプトはディスク情報をLVMまたはudevによって管理できることを認識し(この例では)、詳細を取得する必要があります。それ必要があるかもしれませんsudo
)。
OPが提示したケースは確かにより簡単です。同じマシン上のディスクデバイスにファイルシステムがあります。
$ df /users
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sdb1 8255928 5548304 2288248 71% /users
同様に、スクリプトは単に「df」の出力を見て、それが完全なのか重複しているのかを確認し、どこにあるのか尋ねることができます。それインストールされました。
答え3
マウントポイントに関する情報
df -P file/goes/here | tail -1 | cut -d' ' -f 1
「一部」情報の場合
df /mountpointFromTheLastCommand | tail -1 | awk '{print $6}'
例:
[root@xxx ~]# df -P /root/download/ | tail -1 | cut -d' ' -f 1
/dev/sda2
[root@xxx ~]# df /dev/sda2 | tail -1 | awk '{print $6}'
/
この情報を使用すると、/root/download が / の一部であり、/dev/sda2=] にマウントされていると言えます。
これがまさにアイデアです。必要な出力に合わせて最適化できます。