Как перезапустить Samba ТОЛЬКО когда не передаются никакие файлы?

Как перезапустить Samba ТОЛЬКО когда не передаются никакие файлы?

Я пытаюсь найти способ сделать это. Сейчас у меня есть скрипт, который позволяет только сбросить samba, запустив "smbstatus", но он не очень надежен (показывает заблокированные файлы, когда клиент Windows сопоставил общий ресурс, без какой-либо файловой активности).

Есть ли способ определить, когда Samba передает файлы?

ПРИМЕЧАНИЕ: Только активные передачи файлов, а не сопоставленные клиенты.

EDIT: Вот как выглядит мой сценарий

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процесса, даже когда дочерние процессы все еще работают.)

Связанный контент