私はスクリプト作成の初心者です...非常に基本的なことはできますが、今は手が必要です。
バックアップが必要なときにのみマウントされるローカルファイルシステムがあります。
これから始めます。
#!/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
確認方法がわかりません。何かアドバイスは?
シェルの特別なパラメーター?
を使用すると、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
「終了および終了ステータス」の詳細については、 高度なBashスクリプトガイド を参照してください。
多くのLinuxディストリビューションにはmountpoint
コマンドがあります。ディレクトリがマウントポイントかどうかを確認するために明示的に使用できます。このように単純:
#!/bin/bash
if mountpoint -q "$1"; then
echo "$1 is a mountpoint"
else
echo "$1 is not a mountpoint"
fi
もう1つの方法:
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
マウントされているかどうかを確認:
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!"
Rootを必要としない最も簡単な方法は次のとおりです。
if $(df | grep -q /mnt/ramdisk); then
fi
または、マウントされていないかどうかを確認するには:
if ! $(df | grep -q /mnt/ramdisk); then
fi
以下のスクリプトで試しました
#!/bin/bash
echo "enter the file system to check whether its mounted or not"
read p
echo $p
for i in `cat /proc/mounts`
do
if [[ $p =~ $i ]]
then
echo "$p is mounted"
else
echo "$p is not mounted"
fi
done
入力する必要があるのはファイルシステムの名前だけです