28

In Ubuntu 14.04 I used to use the following command to suspend the computer as a user without root privileges:

dbus-send --system --print-reply --dest="org.freedesktop.UPower" \
/org/freedesktop/UPower org.freedesktop.UPower.Suspend

Unfortunately in Ubuntu 16.04 this doesn't work anymore and I get an error message:

Error org.freedesktop.DBus.Error.UnknownMethod: No such method 'Suspend'

Apparently there has been some changes so what would be the correct command now?

tmt
  • 1,029

2 Answers2

40

As per Debian's wiki, with systemd this is the new command:

systemctl suspend

NOTE: This command still requires root privileges if there is another user's session open. It also doesn't work in Cron. In both cases you you will need to create extra settings.

tmt
  • 1,029
  • 4
    For information, -i means ignore-inhibitors (See systemctl manpage: http://manpages.ubuntu.com/manpages/xenial/en/man1/systemctl.1.html) which might not be what you want. – CJlano Jun 22 '16 at 07:04
  • @CJlano, thanks for bringing it up because I was actually wondering whether to include this flag in my answer. The reason I did was that during my (brief) test the suspend seems to be not performed if some other user is logged in and the flag is not used. I will have another closer look into it. Meanwhile, if you have some more information on how to create command line equivalent of the suspend performed in GUI, please come up with a new answer or post it as a comment and I will include your info in mine (and give you credit :-)). – tmt Jun 22 '16 at 07:16
  • Is there a way to make it also lock the screen? (Using Ubuntu MATE.) – Joschua Dec 07 '18 at 11:05
  • This command works without sudo for Ubuntu 22.04 – Manuel Jordan Sep 15 '23 at 17:13
2

Suspend method is still available on D-Bus, if needed:

dbus-send \
  --system \
  --print-reply \
  --dest=org.freedesktop.login1 \
  /org/freedesktop/login1 \
  org.freedesktop.login1.Manager.Suspend \
  boolean:true

boolean:true is the user_interaction parameter:

The user_interaction boolean parameters can be used to control whether PolicyKit should interactively ask the user for authentication credentials if it needs to.

Source

Alec Mev
  • 141
  • Does it means it might ask password before entering suspend? – jarno May 17 '21 at 15:56
  • I can't say for sure, but I don't think it will. The user_interaction parameter is mandatory, which is why I explained it, but it doesn't necessarily mean that Suspend is affected by it. – Alec Mev May 19 '21 at 12:11