Posso configurar o meu Macbook para desmontar todas as unidades externas quando fecho a tampa?

10

Eu tenho um novo Macbook Pro de 13 "executando o Mavericks. Este computador está conectado a uma unidade USB externa que eu uso nos backups do Time Machine e no armazenamento externo. Os backups do Time Machine ocorrem algumas vezes por dia e a unidade fica praticamente inativa na maioria dos o dia.

Quando estou correndo para uma reunião, para a sala do servidor ou voltando para casa no final do dia, gostaria de fazer o seguinte:

  1. Feche a tampa do meu Macbook, rapidamente.
  2. Faça com que o Mac desmonte automaticamente todas as unidades externas, o mais rápido possível e forçosamente, se necessário. Estou disposto a esperar alguns segundos para que todas as luzes se apaguem.

Existe uma maneira de fazer com que o computador desmonte automaticamente todas as unidades externas assim que eu fechar a tampa do meu Mac?

Atualmente, se eu esquecer de desmontar as unidades externas, meu Mac me castiga mais tarde com o erro "O disco não foi ejetado corretamente. Se possível, sempre ejete um disco antes de desconectá-lo ou desligá-lo".

Sei que é uma boa prática desmontar sempre um disco de forma limpa antes de remover a interface do disco, mas estou procurando uma solução automatizada. Não estou muito preocupado se uma imagem de backup do Time Machine for interrompida ou corrompida, pois um dos próximos backups subsequentes funcionará e eu raramente preciso restaurar a partir do backup. Como o sistema de arquivos é um sistema de arquivos de registro no diário, o diário cuida de maneira transparente de muitos outros erros de corrupção do sistema de arquivos.

Stefan Lasiewski
fonte
Como o logoff da sua conta desmonta todas as unidades, existe uma desvantagem significativa em fazer o logoff? Além disso, acredito que o sistema operacional libera todas as gravações de E / S do sistema de arquivos, portanto, a chance de um problema real com a ejeção durante o sono parece muito baixa para mim - duplamente para os sistemas de arquivos registrados no diário.
bmike

Respostas:

8

Há vários aplicativos que podem executar scripts no modo de suspensão:

  • SleepWatcher - simples, mas eficaz.
  • Cenário - também pode executar scripts em outros momentos, como após a ativação.
  • ControlPlane - mais personalizável, permite executar scripts após muitos eventos diferentes.

Um script bash como o seguinte desmontará todos os discos especificados:

VOLUMES="/Volumes/drive1 /Volumes/drive2 /Volumes/drive3"
for volume in $VOLUMES ; do [ -d $volume ] && umount -f $volume done

Para desmontar todos os volumes, exceto /:

umount -A

ou mais limpo…

osascript -e 'tell application "Finder" to eject (every disk whose ejectable is true)'
grg
fonte
6

Outra opção é o Jettison (disponível na App Store) - é isso que uso há alguns meses e não tive nenhum problema. Recentemente, ganhou a opção de remontar automaticamente discos ainda conectados quando você acorda do modo de suspensão.

A versão mais recente v1.3.0 (somente download direto - presumo que esteja a caminho da App Store) custa mais e eles explicam por que isso está nas Perguntas frequentes.

Se eu leio isso corretamente, pode-se comprar a versão da App Store por dois dólares e depois atualizar para a versão de download direto gratuitamente, mas não confirmei ou tentei isso.

Não é exatamente caro a qualquer preço, mas não é gratuito, como parece a opção SleepWatcher.

man8
fonte
4

Vou elaborar a resposta de @ grgarside.

Estou usando o SleepWatcher

  1. Instale a partir de portas:

    sudo port install sleepwatcher
    
  2. Leia o manual em /opt/local/share/doc/sleepwatcher/ReadMe.rtfe via man sleepwatcher. Leia este antigo Machint da Macworld: cure um Mac insone com o SleepWatcher System . De acordo com o Machint eu posso simplesmente adicionar código para ~/.sleepe ~/.wakeup, ou para os arquivos globais /etc/rc.sleepe /etc/rc.wakeup.

  3. Coloque o seguinte código em ~/.sleep:

    osascript -e 'tell application "Finder" to eject (every disk whose ejectable is true)'
    
  4. Ative o relógio de sono. Mude <key>Disabled</key><true/>para <key>Disabled</key><false/>.

    sudo vim /Library/LaunchDaemons/org.macports.sleepwatcher.plist
    sudo launchctl load /Library/LaunchDaemons/org.macports.sleepwatcher.plist
    sudo launchctl list | grep sleepwatcher
    
  5. Verificar:

    ps aux |grep [s]leepwatcher
    root              421   0.0  0.0  2459568   1012   ??  Ss    2:45PM   0:00.00 /opt/local/bin/daemondo --label=sleepwatcher --start-cmd /opt/local/sbin/sleepwatcher --verbose --sleep /opt/local/etc/rc.sleep --wakeup /opt/local/etc/rc.wakeup ; --pid=exec
    root              422   0.0  0.0  2460656   1888   ??  S     2:45PM   0:00.17 /opt/local/sbin/sleepwatcher --verbose --sleep /opt/local/etc/rc.sleep --wakeup /opt/local/etc/rc.wakeup
    
  6. Feito!

Stefan Lasiewski
fonte
Eu poderia usar alguma revisão sobre esta resposta para garantir que estou ativando a .plistcoisa corretamente.
Stefan Lasiewski
Segui passo a passo, mas não funciona para mim. Depois de dormir, desconecto meu disco rígido externo, meu MacBook5,3 acorda e, quando abro a tampa, recebo o erro de disco ejetado incorretamente.
Saaru Lindestøkke
Isso funciona para mim, mas apenas algumas vezes. Não sei por que.
Stefan Lasiewski
1
Ainda estou no ML, portanto não é específico do Mavericks e não recebo os erros quando a máquina está ativa. Notei que o script .sleep às vezes é executado na vigília, como se não houvesse tempo suficiente para fazê-lo quando ele iria dormir.
Saaru Lindestøkke
1
Também é um bom guia aqui: damacy.net/post/9377132648/…
Dan