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

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

Cuando corro 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 hasta 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 olvido desmontar las unidades externas, mi Mac me regaña más tarde con el error "El disco no se expulsó correctamente. Si es posible, expulse siempre un disco antes de desconectarlo 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 me preocupa mucho si una imagen de copia de seguridad de Time Machine se interrumpe o daña, ya que una de las siguientes copias de seguridad posteriores funcionará y muy rara vez necesito restaurar desde la copia de seguridad. Dado que el sistema de archivos es un sistema de archivos de diario, el diario se ocupa de manera transparente de muchos otros errores de corrupción del sistema de archivos.

Dado que al cerrar la sesión de su cuenta se desmontan todas las unidades, ¿hay una desventaja significativa en simplemente cerrar la sesión? Además, creo que el sistema operativo vacía todas las escrituras de E / S 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.

Respuestas (3)

Hay una serie de 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 la activación.
  • 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)'

Otra opción es Jettison (disponible a través de la App Store), 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 aún conectados cuando se despierta del modo de suspensión.

La versión 1.3.0 más nueva (solo descarga directa, supongo que está en camino a la App Store) cuesta más y explican por qué está en sus preguntas frecuentes.

Si leí correctamente, uno podría comprar la versión de la 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 probado.

No es exactamente caro a ninguno de los dos precios, pero no es gratis como parece ser la opción SleepWatcher.

Elaboraré 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 un Mac insomne ​​con SleepWatcher System . De acuerdo con Machint, simplemente puedo agregar código a ~/.sleepand ~/.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. Activar 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!

Me vendría bien una revisión de esta respuesta para asegurarme de que estoy activando la .plistcosa correctamente.
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 aparece el error de disco expulsado incorrectamente.
Esto funciona para mí, pero sólo a veces. No estoy seguro de por qué.
Sin embargo, también aparece el error "El disco no se expulsó correctamente. Si es posible, expulse siempre un disco antes de desconectarlo o apagarlo". mientras la máquina está activa, con la tapa abierta, mientras la estoy usando también. Parece que Mavericks tiene un error con errores esporádicos con respecto a los discos conectados por USB.
Todavía estoy en ML, por lo que no es específico de Mavericks y no obtengo los errores cuando la máquina está activa. Me di cuenta de que el script .sleep a veces se ejecuta al despertar, como si no tuviera suficiente tiempo para hacerlo cuando se va a dormir.
Ahora he desactivado esto ya que no parece funcionar de manera consistente. Además, me encuentro con un "fallo de activación del sueño" de Mavericks y estoy tratando de ver si mi script de sleepwatcher fue el culpable.
También una buena guía aquí: damacy.net/post/9377132648/…