
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.)