如何僅在沒有傳輸任何檔案時重新啟動 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,即使子進程仍在運行也是如此。)

相關內容