Is there a good way to detect a stale NFS mount

后端 未结 7 1156
别跟我提以往
别跟我提以往 2020-12-23 15:08

I have a procedure I want to initiate only if several tests complete successfully.

One test I need is that all of my NFS mounts are alive and well.

Can I do

7条回答
  •  悲&欢浪女
    2020-12-23 15:33

    Another way, using shell script. Works good for me:

    #!/bin/bash
    # Purpose:
    # Detect Stale File handle and remove it
    # Script created: July 29, 2015 by Birgit Ducarroz
    # Last modification: --
    #
    
    # Detect Stale file handle and write output into a variable and then into a file
    mounts=`df 2>&1 | grep 'Stale file handle' |awk '{print ""$2"" }' > NFS_stales.txt`
    # Remove : ‘ and ’ characters from the output
    sed -r -i 's/://' NFS_stales.txt && sed -r -i 's/‘//' NFS_stales.txt && sed -r -i 's/’//' NFS_stales.txt
    
    # Not used: replace space by a new line
    # stales=`cat NFS_stales.txt && sed -r -i ':a;N;$!ba;s/ /\n /g' NFS_stales.txt`
    
    # read NFS_stales.txt output file line by line then unmount stale by stale.
    #    IFS='' (or IFS=) prevents leading/trailing whitespace from being trimmed.
    #    -r prevents backslash escapes from being interpreted.
    #    || [[ -n $line ]] prevents the last line from being ignored if it doesn't end with a \n (since read returns a non-zero exit code when it encounters EOF).
    
    while IFS='' read -r line || [[ -n "$line" ]]; do
        echo "Unmounting due to NFS Stale file handle: $line"
        umount -fl $line
    done < "NFS_stales.txt"
    #EOF
    

提交回复
热议问题