Mac drive em uso, entendendo lsof

3

Estou tentando reparar permissões no meu HD externo. Eu não posso esvaziar minha lixeira quando ela está conectada, porque eu recebo um monte de "tal arquivo está em uso". Eu li on-line que isso pode ser resolvido reparando permissões na unidade. No momento, não consigo desmontar a unidade porque ela está em uso no segundo em que a reiniciei ou desconectei. Eu usei lsof para ver o que está sendo usado, mas não consigo entender isso e não consigo encontrar guia claro para aprender o que isso significa. A saída está abaixo:

COMMAND PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mds      59 root   23r   DIR    1,9     1701    5 /Volumes/SEAGATE
mds      59 root   31r   DIR    1,9     1701    5 /Volumes/SEAGATE 

Comando

ps ax | egrep '[ /](PID|mds)'

Saída

PID   TT  STAT      TIME COMMAND
660   ??  Ss     0:12.49 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Support/mds
673   ??  Ss     0:08.68 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Versions/A/Support/mds_stores

Comando

/usr/bin/sudo kill 660

Saída

//new line$

Comando

sudo lsof /dev/disk2s2

Saída

COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mds     1599 root   11r   DIR    1,8     1764    5 /Volumes/SEAGATE

nessa ordem

Se eu executar o arquivo bash várias vezes seguidas, posso obter

PID   TT  STAT      TIME COMMAND
1737   ??  Ss     0:00.69 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Support/mds

Mas a unidade ainda está bloqueada por mds

Só para mostrar que a exceção foi adicionada, veja as capturas de tela:

    
por Osman 30.06.2015 / 10:07

2 respostas

2

Diagnóstico rápido demais

I read online that this might be resolved by repairing permission on the drive.

Infelizmente, a partir da descrição do seu problema, isso está errado. O que precisa ser reparado é o sistema de arquivos em seu disco externo SEAGATE .

Análise de lsof

A saída do seu comando lsof informa que o comando mds (primeira coluna) está realmente lendo seu sistema de arquivos /volumes/SEAGATE (última colume). Para aprender mais sobre este fantástico comando, leia o manual que é vindo com o MacOS X:

man lsof

mds é um servidor MacOS X encarregado de fornecer acesso aos metadados de todos os seus sistemas de arquivos. Seus clientes mais importantes são Finder e Spotlight .

Se você não puder ejetar seu disco externo, isso é legítimo e, devido a mds , ainda está lendo. Se você, no entanto, extraí-lo, você certamente irá corromper seu sistema de arquivos.

Libere e corrija o sistema de arquivos

Agora que está corrompido, veja como corrigir isso.

  1. Abrir System Preferences > Spotlight selecione a janela Privacy e adicione ( + ) o seu disco externo SEAGATE para parar Spotlight para tentar indexá-lo.

  2. Se mds ainda estiver em execução:

    ps ax | egrep '[ /](PID|mds)'
    

    Você terá que matá-lo:

    _pid_to_kill='ps ax | egrep '[ /]mds' | awk '{print $1}''
    if [ "${_pid_to_kill}" ] ; then
        echo "${_pid_to_kill}" | while read _pid ; do
            /usr/bin/sudo kill ${_pid}
        done
    fi
    

    Verifique com lsof se o disco SEAGATE está livre agora:

    lsof /Volumes/SEAGATE
    

    Se estiver tudo bem, GOTO 4.

  3. Se matar mds não liberar /Volumes/SEAGATE , haverá outra processo acessando este sistema de arquivos através de mds . (Isso pode ser um anti-vírus ou um crapware. E esse é um outro tamanho de investigação). Nesse caso, o caminho rápido será parar launchd de iniciar mds .

    Faça o seguinte:

    cd /System/Library/LaunchDaemons
    /usr/bin/sudo launchctl unload com.apple.metadata.mds.plist
    

    Verifique se você não tem mais mds process:

    ps ax | egrep '[ /](PID|mds)'
    

    Verifique com lsof se o disco SEAGATE está livre agora:

    lsof /Volumes/SEAGATE
    

    Isso deve ser OK, GOTO 4.

  4. Iniciar Disk Utility e verifique seu disco SEAGATE . Eu suspeito que alguns reparos serão necessários. Neste caso, conserte-o.

    Ejete-o e verifique se você não tem mais nenhum "arquivo em uso" mensagem de erro.

  5. Abrir System Preferences > Spotlight selecione a janela Privacy e remova ( - ) o seu disco externo SEAGATE para permitir Spotlight para indexá-lo.

  6. Se você passou strep 3. onde você teve que parar launchd de iniciar mds você terá que habilitar esta função de volta (caso contrário, muita coisa gerenciando seu sistema de arquivos falhará).

    Faça o seguinte:

    cd /System/Library/LaunchDaemons
    /usr/bin/sudo launchctl load com.apple.metadata.mds.plist
    
por 30.06.2015 / 23:43
2

Parece que o Spotlight está indexando essa unidade. Pode haver um problema que está causando o desligamento do Spotlight e a movimentação constante dessa unidade.

O processo mds é o servidor de metadados. Tente matar este processo e, em seguida, informe os holofotes para não indexar essa unidade.

Para desativar a indexação do Spotlight, vá para Preferências do Sistema - > Spotlight - > Privacidade e adicione o disco à lista de exclusões. Você pode ter que matar mds e reiniciá-lo para obter destaque para parar a indexação.

Não tenho certeza se esse é o seu problema, mas seria um bom lugar para começar.

    
por 30.06.2015 / 15:28