fstabファイルで競合を見つける方法

fstabファイルで競合を見つける方法

時々、以下の例のように、/etc/fstabファイルに競合があることがわかります。

/dev/sdgが2回表示されます!

/data/sdbが2回表示されます!

#
# /etc/fstab
# Created by anaconda on Wed Nov  9 13:26:03 2016
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/vg00-OS-linux_root /                       xfs     defaults        
0 0
UUID=cc749f07-ad72-49e8-ab19-ec6532f5e9 /boot                   xfs     
defaults        0 0
/dev/mapper/vg00-OS-linux_var /var                    xfs     defaults        
0 0
/dev/mapper/vg00-OS-linux_swap swap                    swap    defaults        
0 0


/dev/sdc /data/sdc ext4 defaults,noatime 0 0
/dev/sdb /data/sdb ext4 defaults,noatime 0 0
/dev/sde /data/sde ext4 defaults,noatime 0 0
/dev/sdf /data/sdf ext4 defaults,noatime 0 0
/dev/sdd /data/sdd ext4 defaults,noatime 0 0
/dev/sdg /data/sdb ext4 defaults,noatime 0 0
/dev/sdg /data/sdg ext4 defaults,noatime 0 0
/dev/sdh /data/sdh ext4 defaults,noatime 0 0
/dev/sdi /data/sdi ext4 defaults,noatime 0 0
/dev/sdj /data/sdj ext4 defaults,noatime 0 0
/dev/sdk /data/sdk ext4 defaults,noatime 0 0
/dev/sdl /data/sdl ext4 defaults,noatime 0 0

fstabファイルで最初のフィールドまたは2番目のフィールドの競合を見つけるために単純な検証を作成したいと思います。

この目的に最適な構文は何ですか?

検証では、最初のフィールドまたは2番目のフィールドで重複した単語を見つける必要があります(構文行できるだけ短くしてください)

予想出力 -失敗/正常

&(失敗した場合は、最初のフィールド/ 2番目のフィールドのすべての重複語を印刷する必要があります)

ベストアンサー1

awk ' !/^#/ { if (seendev[$1]++) { print; ++rc; } if (seenmnt[$2]++) { print; ++rc; } } 
     END { exit rc }' < /etc/fstab

上記のawk one-linerは、列1(デバイス)または列2(マウントポイント)と重複するすべての行を印刷し、上記の場合は0以外の戻りコードで終了します。

おすすめ記事