How do I suspend or hibernate from bash shell command line under Linux operating systems?
You can use the following commands under Linux to suspend or Hibernate Linux system:
- pm-suspend Command - During suspend most devices are shutdown, and system state is saved in RAM. The system still requires power in this state. Most modern systems require 3 to 5 seconds to enter and leave suspend, and most laptops can stay in suspend mode for 1 to 3 days before exhausting their battery.
- pm-hibernate Command - During hibernate the system is fully powered off, and system state is saved to disk. The system does not require power, and can stay in hibernate mode indefinitely. Most modern systems require 15 to 45 seconds to enter and leave hibernate, and entering and leaving hibernate takes longer when you have more memory.
- pm-suspend-hybrid Command - Hybrid-suspend is the process where the system does everything it needs to hibernate, but suspends instead of shutting down. This means that your computer can wake up quicker than for normal hibernation if you do not run out of power, and you can resume even if you run out of power.
The above commands are part of the package called pm-utils. It is a package of power management software under RHEL, Fedora, CentOS, Red Hat Enterprise Linux, Debian, Ubuntu and other Linux distros.
Linux Command To Suspend System
To suspend system, enter:
# pm-suspend
OR
$ sudo pm-suspend
Linux Command To Hibernate System
To hibernate system, enter:
# pm-hibernate
OR
$ sudo pm-hibernate
How Do I Put My Computer To Sleep After a Certain Amount Of Time?
You can use the at command as follows to put laptop to sleep after 30 minutes of time:
echo 'pm-suspend' | at now + 30 minutes
How Do I Add Hooks (or so called scripts) When My System Is Suspended?
You can place your scripts in following directory. They are executed at suspend and resume:
- /etc/pm/sleep.d - Almost all distro including Debian looks here first to run script.
- /usr/lib/pm-utils/sleep.d - Default Debian location.
In short, if you need to run custom commands when suspending/resuming, you should place your custom scripts to /etc/pm/sleep.d/ directory only.
Sample Shell Script
#!/bin/sh # If we are running NetworkManager, tell it we are going to sleep. # TODO: Make NetworkManager smarter about how to handle sleep/resume # If we are asleep for less time than it takes for TCP to reset a # connection, and we are assigned the same IP on resume, we should # not break established connections. Apple can do this, and it is # rather nifty. . "${PM_FUNCTIONS}" suspend_nm() { # Tell NetworkManager to shut down networking dbus_send --print-reply --system \ --dest=org.freedesktop.NetworkManager \ /org/freedesktop/NetworkManager \ org.freedesktop.NetworkManager.sleep 2>&1 > /dev/null } resume_nm() { # Wake up NetworkManager and make it do a new connection dbus_send --print-reply --system \ --dest=org.freedesktop.NetworkManager \ /org/freedesktop/NetworkManager \ org.freedesktop.NetworkManager.wake 2>&1 > /dev/null } case "$1" in hibernate|suspend) suspend_nm ;; thaw|resume) resume_nm ;; *) exit $NA ;; esac
You should follow me on twitter here or grab rss feed to keep track of new changes.
Featured Articles:
- 30 Handy Bash Shell Aliases For Linux / Unix / Mac OS X
- Top 30 Nmap Command Examples For Sys/Network Admins
- 25 PHP Security Best Practices For Sys Admins
- 20 Linux System Monitoring Tools Every SysAdmin Should Know
- 20 Linux Server Hardening Security Tips
- Linux: 20 Iptables Examples For New SysAdmins
- Top 20 OpenSSH Server Best Security Practices
- Top 20 Nginx WebServer Best Security Practices
- 20 Examples: Make Sure Unix / Linux Configuration Files Are Free From Syntax Errors
- 15 Greatest Open Source Terminal Applications Of 2012

- My 10 UNIX Command Line Mistakes
- Top 10 Open Source Web-Based Project Management Software
- Top 5 Email Client For Linux, Mac OS X, and Windows Users
- The Novice Guide To Buying A Linux Laptop



![Linux Disable Bluetooth [ Bluetooth Input Devices (hidd) ]](http://s13.cyberciti.org/images/shared/rp/3/6.jpg)








{ 4 comments… read them below or add one }
You can do this directly through the kernel:
echo mem | sudo tee /sys/power/state
which cuts down on unnecessary packages.
Incidentally, this also works on android phones.
thanks very much!
This works GREAT! Thank you!
David
hey, i’m still a noob to linux but i love it already. The point is, i’m currently working on a linux script. that uses ssh to control multiple computers. I want my script to be capable of putting computers to sleep (rtcwake, pm-suspend) but also to be capacle of waking him up whenever he wants . Let’s say i orderd him to sleep 30 minutes but i need him in 5, i want to be capable of waking him up from command. How do i do that?