Ferma la sospensione di un Mac mentre è in esecuzione uno script bash, quindi lascialo dormire normalmente una volta completato


13

Devo svegliarmi il mio Mac durante la notte ed eseguire un rsync per eseguirne il backup. Questo è configurato tramite Risparmio energia> Pianificazione.

Tuttavia sembra che stia tornando a dormire prima che possa fare qualcosa, quindi ho bisogno di smettere di dormire durante l'esecuzione dello script bash da cui rsync viene eseguito.

Ho pensato che il modo migliore (se possibile) fosse emettere un comando per impostare il timeout di sospensione su "Mai" o un timeout molto lungo prima che si sincronizzasse e poi tornasse alla normalità una volta completato. C'è una soluzione migliore per farlo?


Dovrebbe essere su superutente?
Kimvais,

Risposte:


18

caffeinate

Per esempio:

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

Dalla pagina man:

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.

Vedi man caffeinateper i dettagli.


11

Mac OS X 10.8 (Mountain Lion) e versioni successive

Usa il caffeinatecomando Vedi la risposta di Nathan Long o man caffeinateper i dettagli.

Mac OS X 10.7 (Lion) e precedenti

È sepolto nella pagina del manuale, ma pmset ha una modalità molto semplice per prevenire il sonno. Se esegui il comando, il pmset noidletuo Mac rimarrà attivo fino a quando tale processo non verrà interrotto. Ecco come usarlo in uno 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

È meglio che usare pmset per modificare le impostazioni del sonno, il che richiede l'accesso come root e (supponendo che tu voglia essere un buon cittadino) un modo per rilevare le impostazioni correnti e ripristinarle quando hai finito.


2
pmset noidleè deprecato: la pagina man dice: This argument is deprecated in favor of caffeinate(8). Vedi la mia risposta
Nathan Long,

4

Provare

man pmset

:-)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.