Могу ли я настроить свой Macbook для отключения всех внешних дисков при закрытии крышки?

10

У меня есть новый 13-дюймовый Macbook Pro под управлением Mavericks. Этот компьютер подключен к внешнему USB-накопителю, который я использую для резервного копирования Time Machine и для внешнего хранилища. Резервное копирование Time Machine происходит несколько раз в день, и в большинстве случаев диск в основном неактивен. день.

Когда я спешу на встречу, в серверную или иду домой в конце дня, я хотел бы сделать следующее:

  1. Быстро закройте крышку моего Macbook.
  2. Пусть Mac автоматически отключит все внешние накопители как можно быстрее и принудительно, если потребуется. Я готов подождать несколько секунд, чтобы погас свет.

Есть ли способ заставить компьютер автоматически отключать все внешние диски, как только я закрываю крышку на моем Mac?

В настоящее время, если я забуду отключить внешние диски, мой Mac позже накажет меня ошибкой: «Диск не был извлечен должным образом. Если возможно, всегда извлекайте диск перед его отключением или выключением».

Я знаю, что лучше всегда аккуратно размонтировать диск перед удалением интерфейса диска, но я ищу автоматизированное решение. Меня не очень беспокоит, если один образ резервной копии Time Machine будет прерван или поврежден, так как одна из следующих последующих резервных копий будет работать, и мне очень редко понадобится восстановление из резервной копии. Поскольку файловая система является файловой системой журналирования, журнал прозрачно заботится о многих других ошибках повреждения файловой системы.

Стефан Ласевский
источник
Поскольку при выходе из вашей учетной записи отключаются все диски, есть ли существенный недостаток при выходе из системы? Кроме того, я полагаю, что ОС сбрасывает все записи ввода-вывода файловой системы, поэтому вероятность реальной проблемы с выбросом во время сна мне кажется довольно низкой - вдвойне таковой для журнализированных файловых систем.
bmike

Ответы:

8

Существует ряд приложений, которые могут запускать сценарии в спящем режиме:

  • SleepWatcher - простой, но эффективный.
  • Сценарий - также может запускать сценарии в другое время, например, после пробуждения.
  • ControlPlane - более настраиваемый, позволяет запускать сценарии после множества различных событий.

Сценарий bash, такой как следующий, размонтирует все указанные диски:

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

Размонтировать все тома, кроме /:

umount -A

или более чисто ...

osascript -e 'tell application "Finder" to eject (every disk whose ejectable is true)'
Grg
источник
6

Другой вариант - Jettison (доступен через App Store) - вот чем я пользуюсь уже пару месяцев и у меня не было проблем вообще. Недавно он получил возможность автоматически перемонтировать все еще подключенные диски, когда вы выходите из спящего режима.

Более новая версия v1.3.0 (только для прямой загрузки - я полагаю, она находится на пути в App Store) стоит дороже, и они объясняют, почему это в их FAQ.

Если я правильно прочитал, можно было купить версию App Store за два доллара, а затем бесплатно перейти на версию с прямой загрузкой, но я не подтвердил и не попробовал это.

Не совсем дорого по любой цене, но не бесплатно, как кажется, вариант SleepWatcher.

man8
источник
4

Я уточню ответ @ grgarside.

Я использую SleepWatcher

  1. Установить из портов:

    sudo port install sleepwatcher
    
  2. Прочитайте руководство на /opt/local/share/doc/sleepwatcher/ReadMe.rtfи через man sleepwatcher. Прочтите этот старый Machint от Macworld: вылечите бессонницу Mac с помощью системы SleepWatcher . В соответствии с Machint я могу просто добавить код в ~/.sleepи ~/.wakeup, или в глобальные файлы /etc/rc.sleep& /etc/rc.wakeup.

  3. Поместите следующий код в ~/.sleep:

    osascript -e 'tell application "Finder" to eject (every disk whose ejectable is true)'
    
  4. Активировать лунатик. Изменить <key>Disabled</key><true/>на <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. Убедитесь, что:

    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. Готово!

Стефан Ласевский
источник
Я мог бы использовать некоторую рецензию на этот ответ, чтобы убедиться, что я .plistправильно ее активирую .
Стефан Ласевский
Последовал за ним шаг за шагом, но он не работает для меня. После сна я отключаю внешний жесткий диск, мой MacBook5,3 просыпается, и когда я открываю крышку, я получаю сообщение об ошибке извлечения диска.
Saaru Lindestøkke
Это работает для меня, но только иногда. Не уверен почему.
Стефан Ласевский
1
Я все еще на ML, так что это не специфический Mavericks, и я не получаю ошибки, когда машина активна. Я заметил, что сценарий .sleep иногда запускается при пробуждении, как будто у него не хватает времени для этого, когда он засыпает.
Saaru Lindestøkke
1
Также хорошее руководство здесь: damacy.net/post/9377132648/…
Дан