Creo que la sugerencia del Ahorro de Energía es un buen punto de partida:
" Preferencias del Sistema " Ahorro de Energía " Programar y configurarlo para, por ejemplo, 30 minutos antes de salir a trabajar.
Sin embargo, me gustaría no programarlo para volver a dormir a menos que sabrá que realmente ha conseguido expulsar el disco. De lo contrario, podría tener el disco no expulsar por alguna razón, y luego si retira la unidad, obtendrá ese terrible mensaje sobre la expulsión de una unidad de forma incorrecta.
Digamos que quieres salir a trabajar a las 8:00 de la mañana.
Configura el Ahorro de Energía para que el ordenador se despierte a las 7:30 de la mañana.
Entonces usaría Maestro del teclado para ejecutar un script a las 7:35 de la mañana para desmontar la unidad. (Puede programar horas específicas para las macros en Keyboard Maestro).
El primer paso de la macro sería un shell script para desmontar la unidad.
Tengo un shell script para hacer esto ya, así que lo comparto aquí. Puedes añadir un shell script como paso de una macro de Keyboard Maestro.
Lo único que hay que hacer es cambiar el DRIVE="/Volumes/Time Machine"
para reflejar dónde se monta su unidad de Time Machine.
#!/bin/zsh -f
## Change this to wherever your Time Machine drive mounts
DRIVE="/Volumes/Time Machine"
## Change this to however many times you want to try before
## the script considers itself to have failed.
MAX_ATTEMPTS="100"
## Only change this if you know you need to
PATH=/usr/local/bin:/usr/bin:/usr/sbin:/sbin:/bin
## initialize the counter. Don't change this :-)
COUNT=0
## This `while` loop will keep going until the drive no longer appears at the mount
## point, or we exceed the number of attempts we defined above.
while [[ -d "$DRIVE" ]]
do
# increment counter
((COUNT++))
# check to see if we have exceeded maximum attempts
if [ "$COUNT" -gt "$MAX_ATTEMPTS" ]
then
echo "Exceeded '$MAX_ATTEMPTS' trying to eject '$DRIVE'."
## This will cause the script to fail
## which should cause the Keyboard Maestro macro to fail
## so it won't go to sleep, so you'll know that you
## have to manually eject the drive
exit 1
fi
# don't sleep the first time through the loop
[[ "$COUNT" != "1" ]] && sleep 10
# This is where we try to eject the drive
diskutil eject "$DRIVE"
done
exit 0
El segundo paso de la macro es una función incorporada en Keyboard Maestro para poner el ordenador en reposo.
Sin embargo, si el primer paso de la macro falla (es decir, si la unidad NO se expulsa), el ordenador no volverá a dormir.