転送中のファイルがないときだけSambaを再起動するにはどうすればいいですか?

転送中のファイルがないときだけSambaを再起動するにはどうすればいいですか?

これを実行する方法を見つけようとしています。現在、「smbstatus」を実行して samba をリセットすることのみを許可するスクリプトがありますが、これはあまり信頼性が高くありません (Windows クライアントが共有をマップし、ファイル アクティビティがないときにロックされたファイルが表示されます)。

Samba でファイルが転送されているかどうかを検出する方法はありますか?

注意: アクティブなファイル転送のみ、マップされたクライアントは転送されません

編集: 私のスクリプトは次のようになります

until sudo smbstatus | grep "No locked files"
do
    echo "Processes Running..."
    sleep 5
    echo ""
done
sudo service smbd restart
echo "Restarted SMB"

答え1

この設定を使用して、アクティブに使用されていないdeadtime子プロセスを強制終了することができます。smbd

10 分間使用されなかった子プロセスを強制終了する例:

deadtime = 10

文書には、とりわけ、

デッドタイムは、開いているファイルの数がゼロの場合にのみ有効になります。

ほとんどのクライアントには、接続が切断されたときに自動的に再接続する機能が備わっているため、ほとんどの場合、このパラメータはユーザーに対して透過的になります。

ほとんどのシステムでは、このパラメータを数分のタイムアウトで使用することをお勧めします。

この方式を使用すると、子プロセスの数をカウントし、親プロセスのみが残っているときにリセットを実行できます。(運が良かっただけかもしれませんが、最近はsmbd子プロセスがまだ実行されている間に親プロセスを再起動する際に問題が発生したことはありません。)

関連情報