Had this issue with a server computer. The only reliable (I have used this for 6 months+ without a single issue) native solution I found was by using the
The command I use to prevent sleep is
caffeinate -s. You can add a time limit with the
-t [# of seconds] flag but since you want it never to go to sleep you don't need it.
Heres the man page:
CAFFEINATE(8) BSD System Manager's Manual CAFFEINATE(8)
caffeinate -- prevent the system from sleeping on behalf of a utility
caffeinate [-disu] [-t timeout] [-w pid] [utility arguments...]
caffeinate creates assertions to alter system sleep behavior. If no
assertion flags are specified, caffeinate creates an assertion to prevent
idle sleep. If a utility is specified, caffeinate creates the assertions
on the utility's behalf, and those assertions will persist for the dura-
tion of the utility's execution. Otherwise, caffeinate creates the asser-
tions directly, and those assertions will persist until caffeinate exits.
-d Create an assertion to prevent the display from sleeping.
-i Create an assertion to prevent the system from idle sleeping.
-m Create an assertion to prevent the disk 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.
-u Create an assertion to declare that user is active. If the dis-
play is off, this option turns the display on and prevents the
display from going into idle sleep. If a timeout is not specified
with '-t' option, then this assertion is taken with a default of
5 second timeout.
-t 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.
-w Waits for the process with the specified pid to exit. Once the
the process exits, the assertion is also released. This option
is ignored when used with utility option.
caffeinate -i make