Eu tenho uma pequena rede local que possui uma caixa do Gentoo e uma caixa do Windows. Montei um compartilhamento originário da caixa do Windows na caixa do Gentoo com um comando como:
mount -t cifs -o username=WindowsUsername,password=thepassword,uid=pistos //192.168.0.103/Users /mnt/windowsbox
Na maioria das vezes, tudo funciona e eu posso ler e escrever sem problemas. No entanto, a cada poucas semanas, a conexão ou o ponto de montagem parece ficar inoperante ou paralisado, de modo que qualquer processo que tente acessar o ponto de montagem fique preso no estado D (disco ou espera de E / S). Esses processos tornam-se impermeáveis aos sinais TERM e KILL. Desconectar e reconectar a caixa do Windows da rede não ajuda. O estado congelado dura mais de 5 minutos. É realmente frustrante e atrapalha o trabalho normal, porque congela os diálogos, ls
comandos e etc. do Save As . Se eu emitir um umount
no ponto de montagem, ele trava também ou relata que o ponto de montagem está em uso. Eventualmente, o estado morto se resolve e o ponto de montagem é desmontado, ou torna-se possível umount
sem demora.
Meu palpite é que isso acontece quando a conexão / montagem fica ociosa ou quando a máquina Windows está ociosa. Eu não tenho tanta certeza.
Por que isso está acontecendo e o que posso fazer para evitá-lo? Ou como posso matar com êxito esses processos de estado D à vontade?
Possivelmente relacionado: montagens CIFS aguardam leitura
Respostas:
Não sei por que o problema está acontecendo, mas como solução alternativa, você tentou colocar algo como
touch /mnt/windowsbox/keepalive.txt
ouecho "I am still alive." >/mnt/windowsbox/keepalive.txt
ser executado via cron a cada minuto? Dessa forma, a conexão deve permanecer ativa.fonte
*/5 * * * *
no cronograma crontabEu também encontro isso a cada poucos meses.
sudo umount -l
é a minha solução alternativa. /programming//a/96288/2097284fonte
Outra resposta em potencial sugeriu a gravação em um arquivo na montagem em um intervalo regular via cron. Em vez disso, sugiro o uso do programa smbclient para conectar-se ao compartilhamento e desconectar.
Eu escrevi um script bash como este para fazer isso:
Este comando faz uma nova conexão com o compartilhamento e executa o comando exit, desligando imediatamente a conexão que acabou de estabelecer na linha de comando. Deve haver 8 barras antes do nome do servidor e 4 antes do nome do compartilhamento, pois as barras invertidas precisam ser escapadas e as escapadas precisam ser escapadas quando dentro de uma cadeia de caracteres entre aspas duplas. Talvez haja uma maneira mais inteligente de fazer isso, mas isso parece funcionar.
Talvez haja uma maneira de tornar isso ainda mais confiável, mantendo a conexão aberta por vários minutos de cada vez, mas isso é um pouco fora do meu alcance.
fonte
//servername/sharname
é muito mais fácil em locais onde você precisa escapar muito.