Home > Enterprise >  Question about macOS's caffeinate utility
Question about macOS's caffeinate utility

Time:07-23

When one needs to run long-running computations on macOS, caffeinate utility is very handy.

However, it is not very clear from the documentation, which flags I suppose to use?

man caffeinate says:

-i      Create an assertion to prevent the system from idle sleeping.
-s      Create an assertion to prevent the system from sleeping. This
             assertion is valid only when system is running on AC power.

I struggle to see the difference. Could someone shed the light on this, please?

CodePudding user response:

The -i flag uses the PreventUserIdleSystemSleep assertion status which prevents the entire system from idle sleeping, which is the default mode when no assertion flags are specified.

The -s flag uses the PreventSystemSleep assertion status, which is only valid when your device is connected to an AC power.

The core difference is that with -i flag, it prevents the kind of sleep that is activated when the user sits idle for a certain period of time, but does not prevent the system from sleeping when you (or something else) command it to. The -s flag, on the other hand, prevents the entire system from sleeping regardless, even when it's instructed to do so.

P.S. You can see the assertion type created by caffeinate using pmset -g assertions | grep 'caffeinate'.

  • Related