Wie kann ich Samba NUR neu starten, wenn keine Dateien übertragen werden?

Wie kann ich Samba NUR neu starten, wenn keine Dateien übertragen werden?

Ich versuche, einen Weg zu finden, dies zu tun. Im Moment habe ich ein Skript, mit dem Samba nur durch Ausführen von „smbstatus“ zurückgesetzt werden kann, aber es ist nicht sehr zuverlässig (zeigt gesperrte Dateien an, wenn ein Windows-Client eine Freigabe zugeordnet hat, ohne dass eine Dateiaktivität stattfindet).

Gibt es eine Möglichkeit festzustellen, wann mit Samba Dateien übertragen werden?

HINWEIS: Nur aktive Dateiübertragungen, keine zugeordneten Clients

EDIT: So sieht mein Skript aus

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

Antwort1

deadtimeMöglicherweise möchten Sie die Einstellung verwenden , um untergeordnete smbdProzesse zu beenden, die nicht aktiv verwendet werden.

Beispiel, das einen untergeordneten Prozess beendet, nachdem er 10 Minuten lang nicht verwendet wurde:

deadtime = 10

In der Dokumentation heißt es unter anderem:

Die Totzeit wird nur wirksam, wenn die Anzahl der geöffneten Dateien Null ist.

Die meisten Clients verfügen über eine Funktion zur automatischen Wiederverbindung, wenn eine Verbindung unterbrochen wird. Daher sollte dieser Parameter in den meisten Fällen für Benutzer transparent sein.

Für die meisten Systeme wird die Verwendung dieses Parameters mit einem Timeout von einigen Minuten empfohlen.

Mit diesem Schema können Sie die Anzahl der untergeordneten Prozesse zählen und den Reset durchführen, wenn nur noch der übergeordnete Prozess übrig ist. (Es kann zwar Glück sein, aber ich hatte in letzter Zeit keine Probleme, den übergeordneten smbdProzess neu zu starten, selbst wenn die untergeordneten Prozesse noch laufen.)

verwandte Informationen