How can I hibernate a running application?

Example use case:

I run Chromium with a couple of tabs open and decide that I don't need to access the application for the next 20 minutes. In order to conserve laptop battery time, I would like to hibernate (freeze) Chromium without having to close the application (re-opening and re-loading all tabs requires time that I would like to save by hibernating it).


You can use the killall command to send a SIGSTOP signal to all processes matching a given name to freeze them and later send SIGCONT the same way to thaw them again.

First find out the process name using pgrep -l SEARCH_PATTERN:

$ pgrep -l chrom
13010 chromium-browse
13036 chromium-browse
13038 chromium-browse
13153 chromium-browse
13166 chromium-browse
13169 chromium-browse
13175 chromium-browse
13187 chromium-browse
13195 chromium-browse
13206 chromium-browse

Note that it will trim long names, therefore the r is missing. But this isn't a problem as you can use Tab completion to enter the process name which will complete it automatically.

Then you send the SIGSTOP signal to all processes named chromium-browser like this:

$ killall -s STOP chromium-browser 

The Chromium window will grey out as if it became unresponsive. Well, it really became unresponsive, so that was to be expected. You can't interact with the window in any way now (except for the menu bar and minimizing etc. which is handled by the window manager and not the application itself). But the events from clicking buttons etc. are still generated and added to the application's event queue, so they will all be processed at once when you thaw the application again!

You thaw the application again by simply running this command that sends the SIGCONT signal to the specified processes:

$ killall -s CONT chromium-browser 

Sometimes freezing an application this way can cause it to crash, so make sure important stuff is saved before freezing an application.

In rare cases even the desktop environment/window manger/whatever else might become unresponsive as well. In this case you have to thaw the frozen application through a TTY:

Press Ctrl+Alt+F1 to switch to TTY1. You will be asked to log in, so enter your username and password. Then run the command to thaw the application the same way you would run it through your normal terminal emulator. After that switch back to the desktop (TTY7) using Ctrl+Alt+F7 and you should be fine again.


To suspend, try: killall -SIGTSTP chromium-browser

If this does not work, try the forceful version: killall -SIGSTOP chromium-browser.

Either way, to continue use killall -SIGCONT chromium-browser. I tried with Firefox and it worked. Do note however, that if you click buttons in Chromium while it is suspended it will execute that stuff once you continue it's execution.


You can try the following (in a Terminal):

ps aux | grep gedit

Then you'll see something like this:

barend    7166  5.3  1.0 722620 39044 ?        Sl   16:19   0:00 gedit

Write down the number 7166 (or whatever number it is) and then do:

kill -STOP 7166

That will suspend execution of the process. It won't immediately free the memory used by it, but the memory will be available for other processes if they need it.

Then do

kill -CONT 7166 to work with the program again.

Note that you have to change 7166 where appropriate.