スクリプトを介してファイルシステムがマウントされていることを確認する方法

スクリプトを介してファイルシステムがマウントされていることを確認する方法

私はスクリプトが初めてです...非常に基本的なタスクを実行できますが、今は助けが必要です。

バックアップが必要な場合にのみマウントするローカルファイルシステムがあります。

これから始めましょう。

#!/bin/bash
export MOUNT=/myfilesystem

if grep -qs $MOUNT /proc/mounts; then
  echo "It's mounted."
else
  echo "It's not mounted."; then
  mount $MOUNT;
fi

私が言ったように、私はスクリプトにとって非常に基本的です。mount戻りコードを見ると、コマンドの状態を確認できると聞きました。

RETURN CODES
       mount has the following return codes (the bits can be ORed):
       0      success
       1      incorrect invocation or permissions
       2      system error (out of memory, cannot fork, no more loop devices)
       4      internal mount bug
       8      user interrupt
       16     problems writing or locking /etc/mtab
       32     mount failure
       64     some mount succeeded

どうやって確認するのかわかりません。どのような指示がありますか?

答え1

このコマンドは多くのLinuxディストリビューションで利用可能ですmountpoint。ディレクトリがマウントポイントかどうかを確認するために明示的に使用できます。次のように簡単です。

#!/bin/bash    
if mountpoint -q "$1"; then
    echo "$1 is a mountpoint"
else
    echo "$1 is not a mountpoint"
fi

答え2

mountシェル特殊パラメータを使用して、よく作成された実行可能ファイルのステータスコードを確認できます?

からman bash

? Expands to the exit status of the most recently executed foreground pipeline.

コマンドを実行したmount直後に実行すると、前のecho $?コマンドのステータスコードが印刷されます。

# mount /dev/dvd1 /mnt
  mount: no medium found on /dev/sr0
# echo $?
  32

すべての実行可能ファイルに明確に定義されたステータスコードがあるわけではありません。少なくとも成功(0)または失敗(1)コードで終了する必要がありますが、必ずしもそうではありません。

サンプルスクリプトを拡張して修正するために、明確にするifためにネストした構造を追加しました。ステータスコードをテストしてタスクを実行する唯一の方法ではありませんが、学習時に読みやすくなります。

パスの一部が一致しないように、インストールパスの周りのスペースをメモしてください。

#!/bin/bash
mount="/myfilesystem"

if grep -qs " $mount " /proc/mounts; then
  echo "It's mounted."
else
  echo "It's not mounted."
  mount "$mount"
  if [ $? -eq 0 ]; then
   echo "Mount success!"
  else
   echo "Something went wrong with the mount..."
  fi
fi

「終了と終了のステータス」の詳細については、次をご覧ください。高度なバッシュスクリプトガイド

答え3

別の方法:

if findmnt ${mount_point}) >/dev/null 2>&1 ; then
  #Do something for positive result (exit 0)
else
  #Do something for negative result (exit 1)
fi

答え4

短い氏名

確認するインストールされている場合:

mount|grep -q "/mnt/data" && echo "/mnt/data is mounted; I can follow my job!"

確認するインストールされていない場合:

mount|grep -q "/mnt/data" || echo "/mnt/data is not mounted I could probably mount it!"

関連情報