43423
スクリプトでファイル管理するために、マウントしたりアンマウントしたりしてるのですが、  
SAMBA共有元の端末がシャットダウンされた際にアンマウントをしたいと考えてます。

マウント元の端末がシャットダウンしたなどでマウント元が存在しなくなった場合  
一番レスポンスの良い方法は何でしょうか？

マウント情報の確認を行いましたが、やはりマウントされたままでした。  
`cat /etc/mtab | grep '/mount/path'`

マウント先の中身を検索しましたが、どうにもレスポンス悪いです。  
`ls -A /mount/path`

`ping`で確認、でもデフォルトだと時間かかるので、  
パケットサイズ1、タイムアウト1秒のpingを1回送って確認  
`ping -s 1 -c 1 -w 1 SendHostName | grep 'transmitted'`

これでも最低1秒かかります。  
目標1秒未満でサクッと確認する方法は無いのでしょうか？

環境はCentOS7です。
CC BY-SA 3.0
2018-04-17T07:46:50.370
43314
2018-04-20T04:07:26.177
question
centos samba
sambaマウント元の生存確認
マウント元から切断してもらうか、非同期メッセージを飛ばすしかないとのことで、  
マウントを行っているサーバ側からステータスを確認する方法は無いようです。

ですので、確認したいときに生存確認を行うのではなく、  
cronで常にN/W上に存在するか確認して存在しなくなったらアンマウントするようにシェルを組むことにしました。

```

    #!/bin/sh
    base='/mount/path'
    mnts=`ls $base`
    
    for mnt in ${mnts[@]}; do
        lines=`cat /etc/mtab | grep "$base$mnt"`
        if [ -n "$lines" ]; then
            vals=(`echo ${lines[0]}`)
            addr=(`echo ${vals[3]} | tr ',' '\n' | grep 'addr' | tr '=' '\n'`)
            if [ -n "${addr[1]}" ]; then
                res=(`ping -s 1 -c 1 -w 1 ${addr[1]} | grep 'transmitted' | sed -e 's/ //g' | tr ',' '\n'`)
            else
                host=(`echo ${vals[3]} | tr ',' '\n' | grep 'host' | tr '=' '\n'`)
                if [ -n "${host[1]}" ]; then
                    res=(`ping -s 1 -c 1 -w 1 ${host[1]} | grep 'transmitted' | sed -e 's/ //g' | tr ',' '\n'`)
                fi
            fi
            if [ -n "$res" ]; then
                if [ '0received' = "${res[1]}" ]; then
                    umount -f "$base$mnt"
                    echo "unmount is $base$mnt"
                fi
            fi
        fi
    done
    
```
CC BY-SA 3.0
2018-04-20T04:07:26.177
43423
2018-04-20T04:07:26.177
43314
answer