Como posso reiniciar o samba SOMENTE quando não há nenhum arquivo sendo transferido

Como posso reiniciar o samba SOMENTE quando não há nenhum arquivo sendo transferido

Estou tentando encontrar uma maneira de fazer isso. No momento eu tenho um script que só permitirá que o samba seja redefinido executando "smbstatus", mas não é muito confiável (mostra arquivos bloqueados quando um cliente Windows mapeou um compartilhamento, sem atividade de arquivo).

Existe alguma maneira de detectar quando o Samba tem arquivos sendo transferidos?

NOTA: Somente transferências de arquivos ativas, não clientes mapeados

EDIT: Aqui está a aparência do meu script

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

Responder1

Você pode querer usar a deadtimeconfiguração para eliminar smbdprocessos filhos que não estão sendo usados ​​ativamente.

Exemplo, que mata um processo filho após ele ter ficado sem uso por 10 minutos:

deadtime = 10

A documentação observa, entre outras coisas, que

O tempo morto só entra em vigor se o número de arquivos abertos for zero.

A maioria dos clientes possui um recurso de reconexão automática quando uma conexão é interrompida, portanto, na maioria dos casos, esse parâmetro deve ser transparente para os usuários.

Usar esse parâmetro com um tempo limite de alguns minutos é recomendado para a maioria dos sistemas.

Usando este esquema você pode contar o número de processos filhos e realizar sua redefinição quando houver apenas o processo pai restante. (Lembre-se, pode ser sorte, mas recentemente não tive nenhum problema ao reiniciar o smbdprocesso pai, mesmo enquanto os processos filhos ainda estavam em execução.)

informação relacionada