¿Puedo configurar mi Macbook para desmontar todas las unidades externas cuando cierro la tapa?

10

Tengo una nueva Macbook Pro de 13 "con Mavericks. Esta computadora está conectada a una unidad USB externa que utilizo para mis copias de seguridad de Time Machine y para el almacenamiento externo. El dia.

Cuando me apresuro a una reunión, a la sala de servidores o me dirijo a casa al final del día, me gustaría hacer lo siguiente:

  1. Cierra la tapa de mi Macbook, rápidamente.
  2. Haga que la Mac desmonte automáticamente todas las unidades externas, lo más rápido posible y a la fuerza si es necesario. Estoy dispuesto a esperar unos segundos a que se apaguen todas las luces.

¿Hay alguna manera de hacer que la computadora desmonte automáticamente todas las unidades externas tan pronto como cierre la tapa de mi Mac?

Actualmente, si me olvido de desmontar las unidades externas, mi Mac me reprende más tarde con el error "El disco no se expulsó correctamente. Si es posible, siempre expulse un disco antes de desenchufarlo o apagarlo".

Sé que es una buena práctica desmontar siempre un disco limpiamente antes de quitar la interfaz del disco, pero estoy buscando una solución automatizada. No estoy muy preocupado si una imagen de copia de seguridad de Time Machine se interrumpe o se daña, ya que una de las siguientes copias de seguridad posteriores funcionará y rara vez necesito restaurar desde una copia de seguridad. Dado que el sistema de archivos es un sistema de archivos de registro en diario, el diario se encarga de forma transparente de muchos otros errores de corrupción del sistema de archivos.

Stefan Lasiewski
fuente
Dado que cerrar la sesión de su cuenta desmonta todas las unidades, ¿existe una desventaja significativa al cerrar sesión? Además, creo que el sistema operativo elimina todas las escrituras de IO del sistema de archivos, por lo que la posibilidad de un problema real con la expulsión durante el sueño me parece bastante baja, doblemente para los sistemas de archivos registrados.
bmike

Respuestas:

8

Hay varias aplicaciones que pueden ejecutar scripts en suspensión:

  • SleepWatcher : simple pero efectivo.
  • Escenario : también puede ejecutar scripts en otros momentos, como después de estela.
  • ControlPlane : más personalizable, le permite ejecutar scripts después de muchos eventos diferentes.

Un script bash como el siguiente desmontará todos los discos especificados:

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

Para desmontar todos los volúmenes excepto /:

umount -A

o más limpiamente ...

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

Otra opción es Jettison (disponible en la App Store): eso es lo que he estado usando durante un par de meses y no he tenido ningún problema. Recientemente obtuvo la opción de volver a montar automáticamente los discos conectados cuando se despierta.

La v1.3.0 más reciente (solo descarga directa, supongo que está en camino a la App Store) cuesta más y explican por qué esto está en sus Preguntas frecuentes.

Si lo leí correctamente, uno podría comprar la versión de App Store por dos dólares y luego actualizar a la versión de descarga directa de forma gratuita, pero no lo he confirmado ni intentado.

No es exactamente caro a ningún precio, pero no es gratis como parece ser la opción SleepWatcher.

man8
fuente
4

Explicaré la respuesta de @ grgarside.

Estoy usando SleepWatcher

  1. Instalar desde puertos:

    sudo port install sleepwatcher
    
  2. Lea el manual en /opt/local/share/doc/sleepwatcher/ReadMe.rtfy vía man sleepwatcher. Lea este viejo Machint de Macworld: Cure una Mac insomne ​​con el sistema SleepWatcher . Según Machint, simplemente puedo agregar código a ~/.sleepy ~/.wakeup, o a los archivos globales /etc/rc.sleep& /etc/rc.wakeup.

  3. Coloque el siguiente código en ~/.sleep:

    osascript -e 'tell application "Finder" to eject (every disk whose ejectable is true)'
    
  4. Activa el vigilante del sueño. Cambiar <key>Disabled</key><true/>a <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. ¡Hecho!

Stefan Lasiewski
fuente
Podría usar alguna revisión de esta respuesta para asegurarme de que estoy activando la .plistcosa correctamente.
Stefan Lasiewski
Lo seguí paso a paso, pero no me funciona. Después de dormir, desconecto mi disco duro externo, mi MacBook5,3 se activa y cuando abro la tapa me sale el error de disco expulsado incorrectamente.
Saaru Lindestøkke
Esto funciona para mí, pero solo a veces. No estoy seguro de por qué.
Stefan Lasiewski
1
Todavía estoy en ML, por lo que no es específico de Mavericks, y no recibo los errores cuando la máquina está activa. Noté que el script .sleep a veces se ejecuta al despertar, como si no tuviera suficiente tiempo para hacerlo cuando se va a dormir.
Saaru Lindestøkke
1
También una buena guía aquí: damacy.net/post/9377132648/…
Dan