特定のマウントのdfがすべてのマウントに対して繰り返されるのはなぜですか?

特定のマウントのdfがすべてのマウントに対して繰り返されるのはなぜですか?

実行するとそうではないため、他のすべてのマウントポイントdf /nfs/mount/pointよりも高速になると予想されます。df | grep /nfs/mount/pointstat

ただし、すべてのNFSマウントが実行されたことをstrace示しstat、その後、特定のマウントポイントの出力を表示します。

これはバグですか?それとも、すべてのマウントポイントを確認する必要があるより深い理由はありますか?

カーネル 2.6.32 がインストールされている CentOS 6.6、df バージョン 8.4 でこの現象が表示されます。

サンプル出力(会社情報を削除するように編集)

$ strace df /home/user1/some/Directory
~  
~  
stat("/home/user2", {st_mode=S_IFDIR|0755, st_size=12288, ...}) = 0  
stat("/home/user3", {st_mode=S_IFDIR|0777, st_size=20480, ...}) = 0  
stat("/home/user4", {st_mode=S_IFDIR|0777, st_size=36864, ...}) = 0  
stat("/home/user5", {st_mode=S_IFDIR|0755, st_size=663552, ...}) = 0  
stat("/software/bin", {st_mode=S_IFDIR|0755, st_size=12288, ...}) = 0  
stat("/scratch/space", {st_mode=S_IFDIR|0777, st_size=8192, ...}) = 0  
stat("/eng/tools", {st_mode=S_IFDIR|0755, st_size=20480, ...}) = 0  
~  
~

ベストアンサー1

新しいバージョンでは、この問題は解決されたようです。df私のDebianシステム(バージョン8.23)では、df次のようになります。

$ strace -e stat df >/dev/null 
stat("/sys", {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0
stat("/proc", {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0
stat("/dev", {st_mode=S_IFDIR|0755, st_size=3920, ...}) = 0
stat("/dev/pts", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
stat("/run", {st_mode=S_IFDIR|0755, st_size=1360, ...}) = 0
stat("/", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
stat("/run/lock", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=80, ...}) = 0
stat("/sys/fs/pstore", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
stat("/run/shm", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=220, ...}) = 0
stat("/home", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
stat("/mnt/bigboy", {st_mode=S_IFDIR|0777, st_size=4096, ...}) = 0
stat("/mnt/movies", {st_mode=S_IFDIR|0777, st_size=4096, ...}) = 0
stat("/sys/fs/fuse/connections", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
stat("/nfs_shares/lacoloc", {st_mode=S_IFDIR|0754, st_size=20480, ...}) = 0
stat("/nfs_shares/movies", {st_mode=S_IFDIR|0777, st_size=24576, ...}) = 0
stat("/nfs_shares/music", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
stat("/nfs_shares/series", {st_mode=S_IFDIR|0777, st_size=4096, ...}) = 0
stat("/winblows", {st_mode=S_IFDIR|0777, st_size=8192, ...}) = 0
stat("/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=520, ...}) = 0
stat("/run/rpc_pipefs", {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0
stat("/proc/sys/fs/binfmt_misc", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
stat("/sys/fs/cgroup", {st_mode=S_IFDIR|0755, st_size=60, ...}) = 0
stat("/run/cgmanager/fs", {st_mode=S_IFDIR|0755, st_size=240, ...}) = 0
stat("/run/user/1000", {st_mode=S_IFDIR|0700, st_size=60, ...}) = 0
stat("/proc/fs/nfsd", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
stat("/run/user/120", {st_mode=S_IFDIR|0700, st_size=100, ...}) = 0
stat("/run/user/1002", {st_mode=S_IFDIR|0700, st_size=60, ...}) = 0
stat("/run/user/1003", {st_mode=S_IFDIR|0700, st_size=60, ...}) = 0
stat("/run/user/1004", {st_mode=S_IFDIR|0700, st_size=60, ...}) = 0
stat("/run/user/1001", {st_mode=S_IFDIR|0700, st_size=120, ...}) = 0
stat("/run/user/1001/gvfs", {st_mode=S_IFDIR|0500, st_size=0, ...}) = 0
stat("/dev/cgroup/cpu", {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0
stat("/dev", {st_mode=S_IFDIR|0755, st_size=3920, ...}) = 0
stat("/run", {st_mode=S_IFDIR|0755, st_size=1360, ...}) = 0
stat("/", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
stat("/run/lock", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=80, ...}) = 0
stat("/sys/fs/pstore", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
stat("/run/shm", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=220, ...}) = 0
stat("/home", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
stat("/mnt/bigboy", {st_mode=S_IFDIR|0777, st_size=4096, ...}) = 0
stat("/mnt/movies", {st_mode=S_IFDIR|0777, st_size=4096, ...}) = 0
stat("/winblows", {st_mode=S_IFDIR|0777, st_size=8192, ...}) = 0
stat("/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=520, ...}) = 0
stat("/proc/sys/fs/binfmt_misc", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
stat("/sys/fs/cgroup", {st_mode=S_IFDIR|0755, st_size=60, ...}) = 0
stat("/run/cgmanager/fs", {st_mode=S_IFDIR|0755, st_size=240, ...}) = 0
stat("/run/user/1000", {st_mode=S_IFDIR|0700, st_size=60, ...}) = 0
stat("/proc/fs/nfsd", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
stat("/run/user/120", {st_mode=S_IFDIR|0700, st_size=100, ...}) = 0
stat("/run/user/1002", {st_mode=S_IFDIR|0700, st_size=60, ...}) = 0
stat("/run/user/1003", {st_mode=S_IFDIR|0700, st_size=60, ...}) = 0
stat("/run/user/1004", {st_mode=S_IFDIR|0700, st_size=60, ...}) = 0
stat("/run/user/1001", {st_mode=S_IFDIR|0700, st_size=120, ...}) = 0
stat("/run/user/1001/gvfs", {st_mode=S_IFDIR|0500, st_size=0, ...}) = 0
stat("/dev/cgroup/cpu", {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0
+++ exited with 0 +++

ただし、ファイルシステムが与えられると、ターゲットファイルシステムのみが確認されます。

$ strace -e stat df /home/ >/dev/null 
stat("/home", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
stat("/home/", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
+++ exited with 0 +++

おすすめ記事