497

How can I suspend or hibernate my laptop using command line, without installing additional software?

2

14 Answers 14

499

Traditionally ubuntu supported a fairly blunt method of suspend and hibernate. Neither would integrate well with other apps and sometimes not even work on some machines. This new method doesn't require root and notifies all applications listening for power events.

Systemd Method

Starting with Ubuntu 16.04, systemctl call must be used (See Suspend command in Ubuntu 16.04)

systemctl suspend

and

systemctl hibernate

New Method (obsolete)

Obsolete circa Ubuntu 16.04; use systemctl instead, as above.

See the answer here on this page from Adam Paetznick regarding the use of dbus. Ideally you would create a ~/bin/suspend shortcut/script that makes the use of this action easy.

For use over ssh, you should modify policykit rules as outlined by Peter V. Mørch

Old Method

According to the Ubuntu Forum you can use the following commands:

pmi action suspend

and

pmi action hibernate

This requires that you install the powermanagement-interface package (not tested).

sudo apt-get install powermanagement-interface

I have also found the commands sudo pm-suspend and sudo pm-hibernate to work on my netbook.

21
  • 26
    pm-suspend and pm-hibernate works for me and it's easy. Requires sudo but that's OK. (Found pmi idea before but installing a package to use suspend is well bad...)
    – user1034
    Commented Aug 9, 2010 at 20:52
  • 1
    Note that you have to apt-get install powermanagement-interface to run pmi.
    – nealmcb
    Commented Feb 10, 2012 at 1:47
  • 1
    On 11.10 only pm-* works, also with powermanagament-interface added
    – Omegafil
    Commented Feb 13, 2012 at 9:56
  • 1
    doesn't work with my ubuntu 12.10. after apt-get install powermanagement-interface
    – somethis
    Commented Jun 2, 2013 at 9:37
  • 2
    To suspend after one hour: sleep 3600 && systemctl suspend
    – Nils
    Commented Jul 1, 2020 at 21:15
191

The gnome-friendly way is to use dbus.

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

There are two advantages to this command over pm-suspend.

  1. It will lock your screen (upon resume) if you have that option selected in gnome.

  2. It does not require root privilege, so it is easy to add it as a keyboard shortcut, for example.

As mentioned in the comments exchanging the Suspend in the last line to Hibernate creates a hibernate command:

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

If the hibernation throws Error org.freedesktop.UPower.GeneralError: not authorized your user might not be allowed to hibernate. Edit or create /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla so it contains the following section: (source)

[Re-enable hibernate by default]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes

This was tested on UbuntuGnome 14.04.

Note: This is basically the same as qbi's answer, but updated to work for newer versions of Ubuntu as well as including hibernate.

16
  • 18
    Your answer really should be first. It's non-root no-packages-to-be-installed gnome way of doing it. Like!
    – turbo
    Commented Jun 7, 2012 at 16:26
  • 12
    To Hibernate, you can simply replace the last line with org.freedesktop.UPower.Hibernate
    – Sheharyar
    Commented Aug 11, 2013 at 8:46
  • 2
    on my 13.10 it does work. however, the screen is not locked upon resume, even though in "Security and Privacy", "Require my password when waking from Suspend" is activated.
    – andreas-h
    Commented Feb 22, 2014 at 12:24
  • 6
    Didn't work for me (Gnome 3.12, Ubuntu 14.04). Seems the [UPower.Suspend] interface was removed, according to bugs.launchpad.net/ubuntu/+source/gnome-power-manager/+bug/…
    – Gui Ambros
    Commented May 25, 2014 at 14:09
  • 7
    Suspend interface was moved to logind; askubuntu.com/questions/652978 Commented Aug 6, 2015 at 7:52
68

If you want your computer to suspend in one hour because you want to go to bed listening to your favorite radio station, open the terminal and type:

sudo bash -c "sleep 1h; pm-suspend"

and your computer will fall asleep in 1 hour. When you awake, it will have kept your open images and all your stuff.

You can replace 1h by what you want: h for hours, m for minutes, s for seconds, d for days.

2
  • That's my use case I'm looking for! AFIK pm-* can be run without superuser permissions
    – ruX
    Commented Jul 28, 2014 at 22:49
  • 1
    evidently, this solution needs the pm-utils suite: apt-get install -y pm-utils :-) Commented Jun 28, 2021 at 5:02
37

To get Hibernation:

sudo pm-hibernate

To get Suspend:

sudo pm-suspend
9
  • "sudo pm-suspend" not working on mint 13 mate :(
    – rsjethani
    Commented Nov 23, 2012 at 10:16
  • Yeah I think that package was not installed . look for those packages in synaptic.
    – Raja G
    Commented Nov 23, 2012 at 17:34
  • 2
    The drawback of this method is that if you are using the GUI, pm-suspend will NOT block your session, which can be insecure. Commented Feb 18, 2015 at 12:48
  • 1
    It works on ubuntu 15.10, too.
    – Searene
    Commented Dec 18, 2015 at 4:29
  • 1
    works on 14.04 lts Commented Feb 26, 2016 at 16:58
29

You can use the file /sys/power/state to do this. First find out what states are supported:

user@linux:_> cat /sys/power/state
standby mem disk

root@linux:~> echo -n mem > /sys/power/state  # suspend to ram
root@linux:~> echo -n disk > /sys/power/state  # suspend to disk

or via dbus:

# Suspend dbus-send --session --dest=org.gnome.PowerManager \ --type=method_call --print-reply --reply-timeout=2000 \ /org/gnome/PowerManager org.gnome.PowerManager.Suspend #Hibernate dbus-send --session --dest=org.gnome.PowerManager \ --type=method_call --print-reply --reply-timeout=2000 \ /org/gnome/PowerManager org.gnome.PowerManager.Hibernate

According to this entry in launchpad the above interface was removed. So it would not work anymore in Ubuntu.

4
  • First idea gives me: "bash: echo: write error: Invalid argument" Dbus idea gives output: "Error org.freedesktop.DBus.Error.UnknownMethod: Method "Suspend" with signature "" on interface "org.gnome.PowerManager" doesn't exist"
    – user1034
    Commented Aug 9, 2010 at 20:58
  • I added a small explanation to the /sys/power/state-thing. Furthermore the dbus method was removed from Ubuntu so it won't work anymore.
    – qbi
    Commented Aug 9, 2010 at 21:45
  • $ sudo echo -n mem > /sys/power/state - bash: /sys/power/state: Permission denied
    – Hubro
    Commented Aug 24, 2014 at 21:01
  • 7
    This works great. For people having problems with this method when using sudo, the "pipe to file", aka ">" is running in your current shell, so it doesn't get super user privileges while your echo did. You'll need to use sudo -i first, or pipe to sudo tee like so: echo mem | sudo tee /sys/power/state Commented Sep 1, 2014 at 4:22
15

since 15.04 systemD is the standard init system so there is a new command to be used:

systemctl suspend
2
  • I'm using Xubuntu 15.04. The command systemctl suspend does suspend the computer, but it does not cause the screen to be locked, even though I've checked the "Lock screen when system is going for sleep" checkbox in Settings -> Power Manager -> Security. Anyone have any idea why? Commented Apr 10, 2016 at 13:28
  • I've upgraded to Xubuntu 16.04. The command systemctl suspend still suspends the computer. Now, it also causes the screen to be locked, if and only if the "Lock screen when system is going for sleep" checkbox in Settings -> Power Manager -> Security is checked. Commented Jun 22, 2016 at 18:54
14

To suspend a system (14.04) from the command line (or keyboard shortcut) use:

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

I found this out by playing around with gdbus which can list the interfaces available:

To list the services available on the bus:

dbus-send --system --dest=org.freedesktop.DBus --type=method_call --print-reply /org/freedesktop/DBus org.freedesktop.DBus.ListNames

To find the methods:

gdbus introspect --system --dest org.freedesktop.login1 --object-path /org/freedesktop/login1 --recurse
1
  • Thanks a lot for this examples. The first one needs root privileges. When using "--session" there does not seem to be a standardized interface name. It depends on the desktop environment. Am I right? Is there an elegant way to determine the correct interface using introspection, so that a script would run in every runtime environment?
    – buhtz
    Commented Jun 6 at 10:33
8

Adam Paetznick's dbus-send answer didn't work as purported for me on lucid; the machine woke up unlocked, even though the gnome-power-manager is set to lock the screen on wake-up. I want the screen to be locked at wake-up, and found that the following does that:

$ gnome-screensaver-command --lock && pmi action hibernate

I imagine this does not depend on the gnome configuration, but I haven't tested that.

1
4

New interface

…which works in 15.10 Wily, and possibly Utopic and Vivid.

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

Helpfully this doesn't require sudo, unlike the pm-suspend command.

1
  • My XPS 13 9350 with Debian/Gnome was with suspend/hibernate issues when closing the lid. After running this command (and the equivalent for hibernation), it went successfully into suspension (and hibernation) and now closing and opening the lid work as expected! Commented Dec 25, 2016 at 18:29
1

Here's how to put a remote machine in standby over ssh:

ssh -t 192.168.1.4 'sudo nohup &>/dev/null bash -c "(sleep 1; echo -n mem >/sys/power/state) &"'
[email protected]'s password: 
[sudo] password for x: 
Connection to 192.168.1.4 closed.

/sys/power/state works in Ubuntu 13.10. pmi gives Dbus error.

0
0

Personally, I've been experimenting with the pmi method. However, when I tried this, I got an error message: Error org.freedesktop.DBus.Error.Spawn.ChildExited: Launch helper exited with unknown return code 1. However, there is a workaround in the 3rd comment of this bug report, which seems to have worked for me (I'm using Ubuntu 13.03).

1
  • Whilst this may theoretically answer the question, it would be preferable to include the essential parts of the answer here, and provide the link for reference.
    – fossfreedom
    Commented Aug 31, 2013 at 7:37
0

Update for those who, like me, still work on KDE/Ubuntu 14.04 systems. To lock use qdbus, and to suspend use dbus. Full command:

qdbus org.freedesktop.ScreenSaver /ScreenSaver Lock && dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Suspend

To hibernate, i.e. suspend to harddisk instead of RAM, replace 'Suspend' at the end of the command by 'Hibernate'.

To just lock the screen without suspending, xscreensaver-command -lock will work, IF you type only 1 hyphen for the '-lock' option, and only if the screensaver is running. Actually not a very useful command. Using i3lock is easier, but then you will not get a neat login dialog to get back to work, as you will when using qdbus.

0

The following works for me on 16.04 (with Gnome desktop):

gnome-screensaver-command --lock && compsleep

I have also installed it as a custom keyboard shortcut via the Gnome settings panel as keys "Shift-Super-X".

0

How to lock the screen and put the computer to sleep (suspend) in a 1-liner from the command line (could be assigned to an Ubuntu shortcut key)

Tested on Ubuntu 22.04.

This is directly from my longer answer here. Refer to that answer for a detailed explanation of this command:

You can lock the screen and put the computer to sleep in a single command like this:

# lock the screen and put the computer to sleep
sudo true && gnome-screensaver-command -l && sudo pm-suspend

You can assign the above command to a shortcut key if you want to quickly put your computer to sleep.

sudo systemctl suspend, as shown in the main answer, also seems to produce a similar result to my sudo true && gnome-screensaver-command -l && sudo pm-suspend command. I don't know how they differ or if they have any different effects.

Update: on older versions of Ubuntu, it's possible that sudo systemctl suspend will not also lock the screen and require a password upon waking up, whereas my sudo true && gnome-screensaver-command -l && sudo pm-suspend command will always lock the screen first and require a password after wake-up. On Ubuntu 22.04 though, the results seem to be the same. In the Edge Browser only (using any other browser won't show the full content), you can see a chat I had with Bing AI about this here.

After waking up from sleep (suspend), you can run journalctl -n 1000 -e | grep "PM: suspend" to prove your computer really was asleep. Again, see my longer answer on this for details.

Via the GUI menus:

Running my command above produces the exact same result as clicking the top-right of your screen and going to "Power Off/Log Out" --> Suspend, as shown in this screenshot here:

enter image description here

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .