/etc/auto.net 正确吗?似乎是一个错字

/etc/auto.net 正确吗?似乎是一个错字

和许多人一样,当 NFSv3 服务器不可用(关闭)时,我也遇到过机器挂起的问题。我看到了各种建议,比如软/硬、intr、bg 等正在设置......似乎没有很多工作,所以我回到了开始。 /etc/auto.net 是一个脚本,运行以确定可以自动安装的内容。查看该脚本,运行它似乎非常安全,它只输出一个字符串。我有一个 CNAME 为“nas”的 NAS(我知道原来的):

graeme@real:/etc$ MOUNT_NFS_DEFAULT_PROTOCOL=4 ./auto.net nas
-fstype=nfs4,hard,intr,nodev,nosuid,async nas:/
graeme@real:/etc$ MOUNT_NFS_DEFAULT_PROTOCOL=3 ./auto.net nas
 \
    /Download nas:/Download \
    /InternalAdmin nas:/InternalAdmin \
    /Multimedia nas:/Multimedia \
    /Public nas:/Public \
    /Recordings nas:/Recordings \
    /USBUploads nas:/USBUploads \
    /Web nas:/Web \
    /git nas:/git \
    /homes nas:/homes \
    /svn nas:/svn

如您所见,对于 NFSv4,它输出挂载选项,然后输出 NFSv4 导出。对于 NFSv3,如果您查看脚本,您会看到,它仅列出导出(无选项):

SHOWMOUNT="$SMNT --no-headers -e $key"

    $SHOWMOUNT | LC_ALL=C cut -d' ' -f1 | LC_ALL=C sort -u | \
        awk -v key="$key" -v opts="$opts" -- '
        BEGIN   { ORS=""; first=1 }
            { if (first) { print opts; first=0 }; print " \\\n\t" $1, key ":" $1 }
        END { if (!first) print "\n"; else exit 1 }
        ' | sed 's/#/\\#/g'
    opts="-fstype=nfs,hard,intr,nodev,nosuid"
else
    # NFSv4
    opts="-fstype=nfs4,hard,intr,nodev,nosuid,async"

    echo "$opts $key:/"
fi

else 之前的位是 NFSv3,else 之前的位是 NFSv4...如您所见,NFSv4 设置 opts 然后回显 $opts 然后 $key,而 NFSv3 以相同的方式设置 opts但后来不使用它

我想知道现在是否打算更早地分配 opt ,最好采用以下形式:

: ${opts:="-fstype=nfs,hard,intr,nodev,nosuid"}

如果我这样做我会得到:

graeme@real:/etc$ MOUNT_NFS_DEFAULT_PROTOCOL=3 /tmp/auto.net nas
-fstype=nfs,hard,intr,nodev,nosuid \
    /Download nas:/Download \
    /InternalAdmin nas:/InternalAdmin \
    /Multimedia nas:/Multimedia \
    /Public nas:/Public \
    /Recordings nas:/Recordings \
    /USBUploads nas:/USBUploads \
    /Web nas:/Web \
    /git nas:/git \
    /homes nas:/homes \
    /svn nas:/svn

相关内容