Posso configurare il mio Macbook per smontare tutte le unità esterne quando chiudo il coperchio?


10

Ho un nuovo Macbook Pro da 13 "con Mavericks. Questo computer è collegato a un'unità USB esterna che utilizzo per i miei backup di Time Machine e per i backup di Time Machine di archiviazione esterna che si verificano alcune volte al giorno e l'unità è in gran parte inattiva per la maggior parte di il giorno.

Quando mi precipito a una riunione, nella sala server o sto tornando a casa alla fine della giornata, vorrei fare quanto segue:

  1. Chiudi rapidamente il coperchio del mio Macbook.
  2. Chiedi al Mac di smontare automaticamente tutte le unità esterne, il più rapidamente possibile e, se necessario, forzatamente. Sono disposto ad aspettare qualche secondo per spegnere tutte le luci.

C'è un modo per convincere il computer a smontare automaticamente tutte le unità esterne non appena chiudo il coperchio del mio Mac?

Attualmente se dimentico di smontare le unità esterne, il mio Mac mi rimprovera in seguito con l'errore "Il disco non è stato espulso correttamente. Se possibile, espelli sempre un disco prima di scollegarlo o spegnerlo."

So che è consigliabile smontare sempre un disco in modo pulito prima di rimuovere l'interfaccia del disco, ma sto cercando una soluzione automatizzata. Non sono molto preoccupato se un'immagine di backup di Time Machine viene interrotta o danneggiata, poiché uno dei backup successivi funzionerà e molto raramente ho bisogno di ripristinare dal backup. Poiché il filesystem è un filesystem journaling, il journal si occupa in modo trasparente di molti altri errori di corruzione del filesystem.


Dal momento che il logout dal tuo account smonta tutte le unità, c'è un significativo svantaggio al solo logout? Inoltre, credo che il sistema operativo annulli tutte le scritture IO del filesystem, quindi la possibilità di un vero problema con l'espulsione durante il sonno mi sembra abbastanza bassa, doppiamente per i filesystem con journal.
bmike

Risposte:


8

Esistono diverse app che possono eseguire script in modalità sospensione:

  • SleepWatcher : semplice ma efficace.
  • Scenario : può anche eseguire script in altri momenti, ad esempio dopo la veglia.
  • ControlPlane : più personalizzabile, consente di eseguire script dopo molti eventi diversi.

Uno script bash come il seguente smonterà tutti i dischi specificati:

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

Per smontare tutti i volumi tranne /:

umount -A

o più chiaramente ...

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

6

Un'altra opzione è Jettison (disponibile tramite l'App Store): è quello che uso da un paio di mesi e non ho avuto alcun problema. Recentemente ha ottenuto la possibilità di rimontare automaticamente i dischi ancora connessi quando ti svegli dal sonno.

La più recente v1.3.0 (solo download diretto - suppongo che stia arrivando sull'App Store) costa di più e spiegano perché questo è nelle loro FAQ.

Se lo leggessi correttamente, si potrebbe acquistare la versione di App Store per due dollari e quindi passare alla versione di download diretto gratuitamente, ma non ho confermato o provato questo.

Non esattamente costoso per entrambi i prezzi, ma non gratuito come l'opzione SleepWatcher sembra essere.


4

Elaborerò la risposta di @ grgarside.

Sto usando SleepWatcher

  1. Installa dalle porte:

    sudo port install sleepwatcher
    
  2. Leggi il manuale su /opt/local/share/doc/sleepwatcher/ReadMe.rtfe via man sleepwatcher. Leggi questo vecchio Machint di Macworld: cura un Mac insonni con il sistema SleepWatcher . Secondo Machint posso semplicemente aggiungere codice a ~/.sleepe ~/.wakeup, o ai file globali /etc/rc.sleepe /etc/rc.wakeup.

  3. Inserisci il seguente codice in ~/.sleep:

    osascript -e 'tell application "Finder" to eject (every disk whose ejectable is true)'
    
  4. Attiva lo sleepwatcher. Cambia <key>Disabled</key><true/>in <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. Verificare:

    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. Fatto!


Potrei usare qualche recensione su questa risposta per assicurarmi di attivare .plistcorrettamente la cosa.
Stefan Lasiewski il

L'ho seguito passo dopo passo, ma per me non funziona. Dopo il sonno scollego il mio disco rigido esterno, il mio MacBook5,3 si sveglia e quando apro il coperchio ottengo l'errore del disco espulso senza motivo.
Saaru Lindestøkke,

Questo funziona per me, ma solo a volte. Non so perché.
Stefan Lasiewski,

1
Sono ancora su ML, quindi non è specifico di Mavericks e non ricevo errori quando la macchina è attiva. Ho notato che lo script .sleep a volte viene eseguito al risveglio, come se non avesse abbastanza tempo per farlo quando andrà a dormire.
Saaru Lindestøkke,

1
Anche una buona guida qui: damacy.net/post/9377132648/…
Dan
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.