Existe uma maneira de determinar se um compartilhamento SAMBA tem arquivos abertos?

5

Isso é relacionado a um esforço para desligar um servidor raramente usado se não houver conexões SSH ou arquivos abertos.

Como posso determinar em um script shell (cron job em uma caixa Linux) se algum dos compartilhamentos samba atuais tem algum arquivo aberto?

    
por Jamie 02.02.2011 / 05:22

3 respostas

9

Se o seu servidor samba está configurado para usar o bloqueio de arquivo que provavelmente é, eu suponho que você poderia usar 'smbstatus -L' para listar os bloqueios e depois grep a saída para o tipo de bloqueio que você está procurando (EXCLUSIVO, BATCH) se você soubesse que você só se importava com certos tipos de bloqueios.

Algo como:

smbstatus -L | grep EXCLUSIVE

e, em seguida, teste o valor de retorno ($?) no script de tarefa cron.

Infelizmente, não sei o suficiente sobre os tipos de bloqueios para saber se esse é um método adequado para todos ou não.

    
por 02.02.2011 / 05:43
2

Eu provavelmente usaria o comando lsof para determinar quais arquivos estão em uso no compartilhamento.

lsof | grep /path/to/share deve mostrar arquivos em uso.

    
por 02.02.2011 / 15:11
0
A resposta do

cense é boa, e a coisa dele sobre os bloqueios se aplica a essa resposta. O Samba também permite o status de somente leitura (acho que ele aparece como RD_ONLY) e também exibe entradas para diretórios que estão abertos no Windows Explorer, portanto, você precisa decidir que tipo de bloqueios deseja ignorar / focar.

Eu acredito que a saída de smbstatus seja No machines connected. , se, bem, nenhuma máquina estiver conectada, então você poderia usar algo como smbstatus|grep No\ machines\ connected && shutdown para desligar quando nada estiver conectado.

De acordo com o meu conhecimento (sem acesso a um servidor Samba agora), se você tiver um compartilhamento Samba montado no Windows, smbstatus mostrará que a máquina Windows se conectou, mesmo que o usuário não esteja ativamente usando o compartilhamento, então você provavelmente precisará decidir o que fazer com base nesse caso também.

    
por 02.02.2011 / 09:30