How to Prevent & Disable Mac OS X From Sleeping From the Command Line Terminal Application

Posted on in Categories , , , last updated August 31, 2015

I‘m running a process to complete backup and covert images in Mac OS X laptop. I do not wish to disable sleep manually from my OS X power options (Energy Saver). How do I temporarily prevent a Mac from sleeping while my process is still active in Mac OS X Unix operating systems? How can I prevent the system from sleeping temporarily from the command prompt?

You can use the caffeinate command. This command creates assertions to alter system sleep behavior. If no assertion flags are specified, caffeinate creates an assertion to prevent idle sleep.

Another option is to use the pmset command to manipulate power management settings.

Fig.01 Prevent System Sleep While a Safari Command is Active in Mac OS X
Fig.01 Prevent System Sleep While a Safari Command is Active in Mac OS X

Syntax

The syntax is:

caffeinate
caffeinate [options]
caffeinate [options] command

Examples

Let us see how to use the caffeinate command. Open the Terminal application and use the command as per your need.

Prevent the display from sleeping

$ caffeinate -d

Prevent the system from idle sleeping

$ caffeinate -i

Prevent the disk from idle sleeping

$ caffeinate -m

Prevent the system from sleeping when system is running on AC power

$ caffeinate -s

How do I declare that user is active?

$ caffeinate -u vivek
$ caffeinate -u vivek wget url

If the display is off, this option turns the display on and prevents the display from going into idle sleep. If a timeout is not specified with the -t option, then this assertion is taken with a default of 5 second timeout.

How do I set timeout?

$ caffeinate -t 60
You can specifies the timeout value in seconds for which this assertion has to be valid. The assertion is dropped after the specified timeout. Timeout value is not used when an utility is invoked with this command (120 seconds time out is not valid as wget command invoked):
$ caffeinate -t 120 wget url

Prevent sleep as long as given process is running

In this following example, caffeinate command forks a process, execs “make” in it, and holds an assertion that prevents idle sleep as long as that process is running:

caffeinate -i make
 
# Avoid disk from idle sleeping
caffeinate -m wget url
 
# Avoid display from idle sleeping while watching netflix (just in case)
caffeinate -m /Applications/Firefox.app/Contents/MacOS/firefox-bin https://netflix.com

Not a fan of command line?

  1. Click on Apple menu > System Preferences, then click Energy Saver.
  2. Drag the slider that controls the computer’s sleep to Never.
  3. When done again restore to the defaults.
Fig.02 Prevent your Mac from sleeping using GUI method
Fig.02 Prevent your Mac from sleeping using GUI method

Posted by: Vivek Gite

The author is the creator of nixCraft and a seasoned sysadmin and a trainer for the Linux operating system/Unix shell scripting. He has worked with global clients and in various industries, including IT, education, defense and space research, and the nonprofit sector. Follow him on Twitter, Facebook, Google+.

Leave a Comment