Czy mogę skonfigurować mojego Macbooka, aby odłączał wszystkie dyski zewnętrzne po zamknięciu pokrywy?

10

Mam nowego 13-calowego Macbooka Pro z systemem Mavericks. Ten komputer jest podłączony do zewnętrznego napędu USB, którego używam do tworzenia kopii zapasowych Time Machine i do przechowywania danych. Tworzenie kopii zapasowych Time Machine odbywa się kilka razy dziennie, a napęd jest w większości nieaktywny dzień.

Kiedy spieszę się na spotkanie, do serwerowni lub wracam do domu pod koniec dnia, chciałbym wykonać następujące czynności:

  1. Szybko zamknij pokrywę mojego Macbooka.
  2. Niech komputer Mac automatycznie odmontuje wszystkie dyski zewnętrzne, tak szybko, jak to możliwe, i wymusi w razie potrzeby. Chcę poczekać kilka sekund, aż zgasną wszystkie światła.

Czy istnieje sposób, aby komputer automatycznie odmontował wszystkie dyski zewnętrzne, gdy tylko zamknę pokrywę komputera Mac?

Obecnie, jeśli zapomnę odmontować dyski zewnętrzne, mój komputer Mac skarci mnie później z błędem „Dysk nie został prawidłowo wysunięty. Jeśli to możliwe, zawsze wyjmij dysk przed odłączeniem go lub wyłączeniem”.

Wiem, że najlepszą praktyką jest zawsze odmontowywanie dysku przed usunięciem interfejsu dysku, ale szukam rozwiązania automatycznego. Nie martwię się bardzo, jeśli jeden obraz kopii zapasowej Time Machine zostanie przerwany lub uszkodzony, ponieważ jedna z kolejnych kopii zapasowych będzie działać i bardzo rzadko muszę przywracać dane z kopii zapasowej. Ponieważ system plików jest systemem plików kronikowania, dziennik w sposób przejrzysty usuwa wiele innych błędów uszkodzenia systemu plików.

Stefan Lasiewski
źródło
Ponieważ wylogowanie się z konta powoduje odmontowanie wszystkich dysków, czy wylogowanie ma znaczącą wadę? Ponadto wierzę, że system operacyjny opróżnia wszystkie operacje zapisu we / wy systemu plików, więc szansa na rzeczywisty problem z wysunięciem podczas snu wydaje mi się dość niska - podwójnie w przypadku kronikowanych systemów plików.
bmike

Odpowiedzi:

8

Istnieje wiele aplikacji, które mogą uruchamiać skrypty w trybie uśpienia:

  • SleepWatcher - prosty, ale skuteczny.
  • Scenariusz - można również uruchamiać skrypty w innych momentach, np. Po przebudzeniu.
  • ControlPlane - bardziej konfigurowalny, pozwala uruchamiać skrypty po wielu różnych zdarzeniach.

Skrypt bash, taki jak poniżej, odmontuje wszystkie określone dyski:

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

Aby odmontować wszystkie woluminy z wyjątkiem /:

umount -A

lub bardziej czysto…

osascript -e 'tell application "Finder" to eject (every disk whose ejectable is true)'
grg
źródło
6

Inną opcją jest Jettison (dostępny w App Store) - z tego korzystam od kilku miesięcy i nie miałem żadnych problemów. Niedawno zyskał opcję automatycznego ponownego instalowania wciąż podłączonych dysków po przebudzeniu.

Nowsza wersja 1.3.0 (tylko bezpośrednie pobieranie - zakładam, że jest w drodze do App Store) kosztuje więcej, a oni wyjaśniają, dlaczego jest to w ich FAQ.

Jeśli przeczytam to poprawnie, można kupić wersję App Store za dwa dolary, a następnie uaktualnić do wersji do bezpośredniego pobrania za darmo, ale tego nie potwierdziłem ani nie wypróbowałem.

Nie do końca drogie w żadnej cenie, ale nie tak bezpłatne, jak wydaje się opcja SleepWatcher.

man8
źródło
4

Opracuję odpowiedź na @ grgarside.

Używam SleepWatcher

  1. Zainstaluj z portów:

    sudo port install sleepwatcher
    
  2. Przeczytaj instrukcję na stronie /opt/local/share/doc/sleepwatcher/ReadMe.rtfi przez man sleepwatcher. Przeczytaj ten stary Machint z Macworld: Wylecz bezsennego Maca za pomocą SleepWatcher System . Według Machinta mogę po prostu dodać kod do ~/.sleepi ~/.wakeup, lub do plików globalnych /etc/rc.sleepi /etc/rc.wakeup.

  3. Umieść następujący kod w ~/.sleep:

    osascript -e 'tell application "Finder" to eject (every disk whose ejectable is true)'
    
  4. Aktywuj funkcję Sleepwatcher. Zmień <key>Disabled</key><true/>na <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. Zweryfikować:

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

Stefan Lasiewski
źródło
Przydałaby mi się recenzja tej odpowiedzi, aby upewnić się, że aktywuję to .plistpoprawnie.
Stefan Lasiewski,
Śledziłem to krok po kroku, ale to nie działa dla mnie. Po śnie odłączam zewnętrzny dysk twardy, mój MacBook5,3 budzi się, a kiedy otwieram pokrywę, pojawia się błąd nieprawidłowego wysunięcia dysku.
Saaru Lindestøkke,
To działa dla mnie, ale tylko czasami. Nie pewny dlaczego.
Stefan Lasiewski
1
Nadal jestem na ML, więc nie jest to specyficzne dla Mavericks i nie otrzymuję błędów, gdy maszyna jest aktywna. Zauważyłem, że skrypt .sleep czasami jest uruchamiany po przebudzeniu, tak jakby nie miał wystarczająco dużo czasu, aby to zrobić, gdy idzie spać.
Saaru Lindestøkke,
1
Również dobry przewodnik tutaj: damacy.net/post/9377132648/...
Dan.