Existe uma maneira de detectar por que uma tarefa de linha de comando como rm ainda não é feita após várias horas no mac os x?

0

Eu estava tentando fazer com que o Time Machine voltasse a funcionar no meu iMac com OS X 10.7 (Lion) e um drive remoto na estação base do aeroporto, e a única solução que funcionou foi renomear meu arquivo .sparsebundle no disco rígido para "INVALID.sparsebundle", para que comece de novo nesse volume.

O backup é um .sparsebundle (que é realmente uma pasta cheia de arquivos) com cerca de 400 GB de tamanho. Eu tentei este comando esta manhã às 8 da manhã e às 6:30 da tarde ele ainda não foi concluído:

sudo rm -rf INVALID.sparsebundle

Existe alguma maneira de saber por que está pendurado ou o que está fazendo? Existem todos os tipos de truques legais possíveis nas linhas de comando do Mac OS X e até usando algumas das boas ferramentas gráficas do OS X, possivelmente envolvendo o uso do depurador GCC, ou dtrace, ou talvez até algum tipo de processo de monitoramento de kernel me qual função chamada ou syscall está executando atualmente.

Eu posso localizar o PID para o comando rm:

$ ps aux |grep "rm -rf"

root             392   0.0  0.3  2454248  20232 s001  U+    9:08am   0:12.04 rm -rf /Volumes/Backup3tb/INVALID.sparsebundle

Há algo que eu possa fazer para descobrir o que o PID 392 está fazendo agora e se ele está ou não pendurado? (Eu vou deixá-lo durante a noite, e depois de 24 horas inteiras de não responder, vou considerar abortar, e se eu fizer isso, vou apenas formatar este volume.)

Eu tentei o iosnoop, assim:

$ sudo iosnoop -p 392
  UID   PID D    BLOCK   SIZE       COMM PATHNAME

Não está me mostrando nada. Eu suspeito que isso significa que o processo está bem e verdadeiramente desligado de alguma coisa?

    
por Warren P 21.02.2013 / 00:42

2 respostas

0

Descobri que o System Monitor no Mac OS tem um recurso útil chamado Sample Process que me permite ver se está fazendo alguma coisa ou se está congelado.

Localizandooprocessopossivelmentesuspensoeaamostragem,possoverquaisfunçõesestãosendoexecutadas(sehouver).Seeunãoobtivernada,éjustoassumirqueoprocessoestásuspenso.

Observequeexcluirum.sparsebundlesobreoprotocoloderedeApple(AFP),comoaoconectarseumacaumaunidadederederemotaemumaestaçãobaseextremadoaeroportoeexcluirumbackupemmododeredecriadopeloTime-Machine,desconectacomsegurançaoutilitário"/ bin / rm" da linha de comando darwin / bsd rm para mim.

Eu também descobri que o Time Machine irá corromper o .sparsebundles quando eles crescem muito, no meu caso, mais de 600 GB no meu sistema. Só posso usar o Time Machine de forma confiável (a) sem colocá-lo em rede ou (b) se o tamanho total do backup ficar abaixo de 500 gb.

    
por 21.02.2013 / 14:54
1

Felizmente, um .sparsebundle é na verdade uma hierarquia de diretórios cheia de arquivos de banda de 8MB. Se você navegar para essa hierarquia de diretórios e assistir, provavelmente poderá ver se algum arquivo está sendo excluído. Se você quiser fazer isso a partir do Finder, use a opção de menu contextual para "Mostrar conteúdo do pacote" ao clicar com o botão direito no arquivo .sparsebundle.

Acredito que o Time Machine usa apenas um .sparsebundle quando você faz backup em um servidor AFP remoto, como o Time Capsule ou o Mac OS X Server (ou o Mac OS X "client" com o compartilhamento de arquivos ativado ou o netatalk no Unix, etc). Portanto, você pode estar tendo lentidão na rede ou no servidor; pode não ser um problema com sua máquina local. Considere reinicializar seu servidor AFP se isso for viável e, em seguida, reinicie o processo de exclusão.

Para uma unidade USB local, o Time Machine geralmente requer uma partição dedicada para fazer backup e faz uso inteligente de hardlinks do sistema de arquivos para controlar quais arquivos permanecem inalterados de backup para backup. Sua pergunta faz parecer que é um drive USB local, então o fato de você estar falando sobre um .sparsebundle me surpreendeu. Ele costumava ser conectado a um servidor AFP remoto, mas agora é local ou algo do tipo?

    
por 21.02.2013 / 01:02