我正在嘗試找到一種方法來做到這一點。現在我有一個腳本,只允許透過執行「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
,即使子進程仍在運行也是如此。)