これは 関連 SSH接続がないかファイルを開いていない場合にめったに使用されないサーバーをシャットダウンするための努力です。
現在のsamba共有のいずれかに開いているファイルがあるかどうかをシェルスクリプト(Linuxボックスのcronジョブ)でどのように判断できますか?
Sambaサーバーがおそらくファイルロックを使用するように構成されている場合、 'smbstatus -L'を使用してロックを一覧表示し、探しているロックのタイプ(EXCLUSIVE、BATCH)の出力をgrepできると思います。あなたはあなたが特定の種類の錠だけを気にかけていることを知っていました。
何かのようなもの:
smbstatus -L | grep EXCLUSIVE
次に、cronジョブスクリプトの戻り値($?)に対してテストします。
残念ながら、これが適切なキャッチオールメソッドであるかどうかを知るには、ロックのタイプについて十分に知りません。
おそらく、lsofコマンドを使用して、共有で使用されているファイルを判別します。
lsof | grep /path/to/share
は使用中のファイルを表示します。
censeの答えは良いです、そしてロックについての彼のことはこの答えに当てはまります。 Sambaは、読み取り専用ステータス(RD_ONLYとして表示されると思います)も許可し、Windowsエクスプローラーで開いているディレクトリのエントリも表示するため、無視/フォーカスするロックの種類を決定する必要があります。
smbstatus
の出力はNo machines connected.
だと思います。マシンが接続されていない場合は、smbstatus|grep No\ machines\ connected && shutdown
のようなものを使用して、何も接続されていないときにシャットダウンできます。
私の知る限りでは(現在Sambaサーバーにアクセスできない)、Samba共有がWindowsにマウントされている場合、ユーザーがアクティブでない場合でも、smbstatus
はWindowsマシンが接続されていることを示します共有を使用するので、おそらくその場合にも基づいて何をすべきかを決定する必要があります。