Arrêtez un Mac de dormir pendant qu'un script bash est en cours d'exécution, puis laissez-le dormir normalement une fois terminé

13

J'ai mon Mac pour me réveiller pendant la nuit et exécuter un rsync pour le sauvegarder. Ceci est configuré via Energy Saver> Schedule.

Cependant, il semble qu'il se remette en sommeil avant de pouvoir faire quoi que ce soit, donc je dois l'arrêter de dormir pendant l'exécution du script bash à partir duquel rsync s'exécute.

J'ai pensé que la meilleure façon (si c'est possible) est d'émettre une commande pour définir le délai de veille sur "Jamais" ou un délai très long avant qu'il ne se resynchronise, puis revienne à la normale une fois qu'il est terminé. Existe-t-il une meilleure solution pour ce faire?

Gaffe
la source
Devrait être sur superutilisateur?
Kimvais

Réponses:

18

Caféine

Par exemple:

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

Depuis la page de manuel:

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.

Voir man caffeinatepour plus de détails.

Nathan Long
la source
11

Mac OS X 10.8 (Mountain Lion) et versions ultérieures

Utilisez la caffeinatecommande. Voir la réponse de Nathan Long ou man caffeinatepour plus de détails.

Mac OS X 10.7 (Lion) et versions antérieures

Il est enterré dans la page de manuel, mais pmset a un mode très simple pour empêcher le sommeil. Si vous exécutez la commande, pmset noidlevotre Mac restera éveillé jusqu'à ce que ce processus soit tué. Voici comment l'utiliser dans 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

C'est mieux que d'utiliser pmset pour modifier vos paramètres de sommeil, ce qui nécessite un accès root et (en supposant que vous voulez être un bon citoyen) un moyen de détecter les paramètres actuels et de les modifier à nouveau lorsque vous avez terminé.

benzado
la source
2
pmset noidleest désapprouvée: la page de manuel dit: This argument is deprecated in favor of caffeinate(8). Voir ma réponse.
Nathan Long