I have a bash script that executes several long-running commands on Mac OS. How can I prevent the computer from going to sleep while the script is running?
Asked
Active
Viewed 3,059 times
1 Answers
16
I found that I can achieve the desired behavior by adding this line to the start of the script:
caffeinate -i -w $$ &
How it works:
caffeinate
is a built-in Mac OS utility for creating power management assertions to prevent sleep.- The
-i
flag tellscaffeinate
to prevent idle sleep. - The
-w
flag tellscaffeinate
to wait until the specified process finishes. $$
is a shell variable containing the current PID. Together with the-w
flag this tellscaffeinate
to prevent sleep for the duration of the shell script.
- The
- The final
&
runs the command in the background so the script can continue running.

augurar
- 12,081
- 6
- 50
- 65
-
1`-i` is superfluous because it's already the default. – Motsel Mar 11 '23 at 21:23