web-dev-qa-db-ja.com

SAMBA共有に開いているファイルがあるかどうかを確認する方法はありますか?

これは 関連 SSH接続がないかファイルを開いていない場合にめったに使用されないサーバーをシャットダウンするための努力です。

現在のsamba共有のいずれかに開いているファイルがあるかどうかをシェルスクリプト(Linuxボックスのcronジョブ)でどのように判断できますか?

5
Jamie

Sambaサーバーがおそらくファイルロックを使用するように構成されている場合、 'smbstatus -L'を使用してロックを一覧表示し、探しているロックのタイプ(EXCLUSIVE、BATCH)の出力をgrepできると思います。あなたはあなたが特定の種類の錠だけを気にかけていることを知っていました。

何かのようなもの:

smbstatus -L | grep EXCLUSIVE

次に、cronジョブスクリプトの戻り値($?)に対してテストします。

残念ながら、これが適切なキャッチオールメソッドであるかどうかを知るには、ロックのタイプについて十分に知りません。

9
rthomson

おそらく、lsofコマンドを使用して、共有で使用されているファイルを判別します。

lsof | grep /path/to/shareは使用中のファイルを表示します。

2
ewwhite

censeの答えは良いです、そしてロックについての彼のことはこの答えに当てはまります。 Sambaは、読み取り専用ステータス(RD_ONLYとして表示されると思います)も許可し、Windowsエクスプローラーで開いているディレクトリのエントリも表示するため、無視/フォーカスするロックの種類を決定する必要があります。

smbstatusの出力はNo machines connected.だと思います。マシンが接続されていない場合は、smbstatus|grep No\ machines\ connected && shutdownのようなものを使用して、何も接続されていないときにシャットダウンできます。

私の知る限りでは(現在Sambaサーバーにアクセスできない)、Samba共有がWindowsにマウントされている場合、ユーザーがアクティブでない場合でも、smbstatusはWindowsマシンが接続されていることを示します共有を使用するので、おそらくその場合にも基づいて何をすべきかを決定する必要があります。

0
Kyle