Originally published August 20, 2016 @ 10:11 am
Sometimes you just need to do a quick sanity check on the filesystem mount status to make sure everything in fstab
is mounted and everything’s that mounted is in the fstab
. If, like myself, you’re a fan of NFS and bind mounts, getting a clear picture can get a bit hairy. So here’s an easy command making use of comm
and the excellent findmnt
utility to show any filesystems that should be mounted according to fstab
but for some reason are not mounted:
o="lvnu -t $(awk '{print $NF}' /proc/filesystems | sort -u | xargs | sed -e 's/ /,/g'),bind -o TARGET" comm -13 <(findmnt -k${o} | sort -u) <(findmnt -s${o} | sort -u)
To see any active mounts that are not in fstab
you can use the following command:
o="lvnu -t $(awk '{print $NF}' /proc/filesystems | sort -u | xargs | sed -e 's/ /,/g'),bind -o TARGET" comm -23 <(findmnt -k${o} | sort -u) <(findmnt -s${o} | sort -u)
The first findmnt
gives you a list of what’s mounted according to the kernel. And the second part gives you a list of what should be mounted according to the fstab
. Pretty simple. However, findmnt
may not be available on older Linux versions. A viable alternative is the monutpoint
command. Here’s a quick script that will list any filesystems from the fstab
that are not mounted:
#!/bin/bash egrep '^(/|[[:alnum:]\.-]*:/)' /etc/fstab | egrep -v "\Wswap\W" | awk '{print $2}' | sort -u | while read m do if [ $(mountpoint "${m}" 2>/dev/null 1>&2; echo $?) -ne 0 ] then echo "${m}" fi done
And here’s something extra: it may also be useful to make sure that whatever is listed in fstab
and mtab
as read-write actually is:
#!/bin/bash random=$(echo "`expr ${RANDOM}${RANDOM} % 100000`+1"|bc -l) o="lvnu -t ext2,ext3,ext4,reiserfs,btrfs,xfs,jfs,zfs,efs,nfs,bind" for fs in $(sort -u <(findmnt -m${o} -o TARGET,OPTIONS | egrep "\srw" | awk '{print $1}') \ <(findmnt -s${o} -o TARGET,OPTIONS | egrep "\srw" | awk '{print $1}')) do echo "Checking ${fs}" s="$(touch "${fs}/${random}" 2>/dev/null; echo $?)" if [ ${s} -ne 0 ] then echo "$(findmnt -k${o} -o TARGET,SOURCE | grep -m1 "^${fs}") appears to be read-only" else if [ ! -z "${random}" ] then /bin/rm -f "${fs}/${random}" fi fi done
Experienced Unix/Linux System Administrator with 20-year background in Systems Analysis, Problem Resolution and Engineering Application Support in a large distributed Unix and Windows server environment. Strong problem determination skills. Good knowledge of networking, remote diagnostic techniques, firewalls and network security. Extensive experience with engineering application and database servers, high-availability systems, high-performance computing clusters, and process automation.