sh 脚本:如果尚未安装远程文件系统,如何安装?

sh 脚本:如果尚未安装远程文件系统,如何安装?

在 Bourne shell 脚本 (#!/bin/sh) 中,如何检查远程 NFS 共享是否已安装,如果未安装,则安装它?目前,我有一组使用“mount”输出的丑陋的 cat、greps 和 ifs,但它似乎不能可靠地完成工作。

答案1

如果可能的话,设置自动挂载 ( autofs ) 将是执行此操作的标准方法。它可能已经包含在您的发行版中(随 CentOS / Redhat 默认安装)。 这是一个教程

为什么要使用 Automount?

自动挂载是指由守护进程自动挂载和卸载某些文件系统的过程。如果文件系统已卸载,而用户尝试访问它,它将被自动(重新)挂载。这在大型网络环境中以及在几台机器(尤其是不总是在线的机器)之间交叉挂载文件系统时特别有用。

答案2

您能 grep/etc/mtab该设备吗? grep -c '/mnt/foo' /etc/mtab 如果 grep 输出“1”,则 /mnt/foo 已挂载。

答案3

使用mountpoint

mountpoint -q /path/to/nfs/share || mount -t nfs server:/nfs/share /path/to/nfs/share

(我不知道它mountpoint的普及程度或可移植性如何;它是由我的 Debian 服务器上的 initscripts 包提供的。)

答案4

您可能能够使用 stat 执行某些操作。不同文件系统的“设备”字段会有所不同。因此,假设您想查看是否已安装,则可以将/mnt/foo的输出与 进行比较。如果设备不同,则表示已安装某些设备。stat -c%d /mnt/stat -c%d /mnt/foo/

if [ `stat -c%d /mnt/` -eq `stat -c%d /mnt/foo/` ]; then
    mount /mnt/foo
fi

相关内容