Evite que una Mac duerma mientras se ejecuta un script bash, luego permita que duerma normalmente una vez que se complete

12

Tengo mi Mac para despertar durante la noche y ejecutar un rsync para hacer una copia de seguridad. Esto se configura a través de Energy Saver> Schedule.

Sin embargo, parece que va a volver a dormir antes de que pueda hacer algo, así que necesito dejar de dormir durante la ejecución del script bash desde el que se ejecuta rsync.

Pensé que la mejor manera (si es posible) es emitir un comando para establecer el tiempo de espera de suspensión en "Nunca" o un tiempo de espera muy largo antes de que se vuelva a sincronizar y luego volver a la normalidad una vez que se haya completado. ¿Hay una mejor solución para hacer esto?

Garfio
fuente
¿Debería estar en superusuario?
Kimvais

Respuestas:

17

Cafeína

Por ejemplo:

caffeinate -i rsync -avz someuser@somehost:somefolder /some/local/folder

Desde la página del manual:

EXAMPLE
     caffeinate -i make
        caffeinate forks a process, execs "make" in it, and holds an
        assertion that prevents idle sleep as long as that process
        is running.

Ver man caffeinatepara más detalles.

Nathan Long
fuente
10

Mac OS X 10.8 (Mountain Lion) y posterior

Usa el caffeinatecomando. Ver la respuesta de Nathan Long o man caffeinatepara más detalles.

Mac OS X 10.7 (Lion) y versiones anteriores

Está enterrado en la página del manual, pero pmset tiene un modo muy simple para prevenir el sueño. Si ejecuta el comando, pmset noidlesu Mac se mantendrá despierta hasta que se elimine ese proceso. Aquí se explica cómo usarlo en un script:

# launch process to prevent sleep and move it to the background
pmset noidle &
# save the process ID
PMSETPID=$!

... do stuff here ...
... don't fall asleep ...
... watch out for that tree!
... ok we're free and clear now ...

# kill pmset so the computer can sleep if it wants to
kill $PMSETPID

Esto es mejor que usar pmset para cambiar su configuración de suspensión, lo que requiere acceso de root y (suponiendo que quiera ser un buen ciudadano) alguna forma de detectar la configuración actual y cambiarla nuevamente cuando haya terminado.

benzado
fuente
2
pmset noidleestá en desuso: la página del manual dice: This argument is deprecated in favor of caffeinate(8). Mira mi respuesta.
Nathan Long
4

Tratar

man pmset

:-)


fuente