![Como posso reiniciar o samba SOMENTE quando não há nenhum arquivo sendo transferido](https://rvso.com/image/154491/Como%20posso%20reiniciar%20o%20samba%20SOMENTE%20quando%20n%C3%A3o%20h%C3%A1%20nenhum%20arquivo%20sendo%20transferido.png)
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 deadtime
configuração para eliminar smbd
processos 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 smbd
processo pai, mesmo enquanto os processos filhos ainda estavam em execução.)