Reputation: 13016
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?
Upvotes: 10
Views: 5255
Reputation: 13016
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.
-i
flag tells caffeinate
to prevent idle sleep.-w
flag tells caffeinate
to wait until the specified process finishes.$$
is a shell variable containing the current PID. Together with the -w
flag this tells caffeinate
to prevent sleep for the duration of the shell script.&
runs the command in the background so the script can continue running.Upvotes: 20