f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen This file is part of systemd.
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen Copyright 2012 Lennart Poettering
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen Copyright 2013 Zbigniew Jędrzejewski-Szmek
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen systemd is free software; you can redistribute it and/or modify it
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen under the terms of the GNU Lesser General Public License as published by
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen the Free Software Foundation; either version 2.1 of the License, or
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen (at your option) any later version.
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen systemd is distributed in the hope that it will be useful, but
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen WITHOUT ANY WARRANTY; without even the implied warranty of
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen Lesser General Public License for more details.
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen You should have received a copy of the GNU Lesser General Public License
d3cf48f4bd3d69a276f17aa7c910e0b35215cabaLennart Poettering along with systemd; If not, see <http://www.gnu.org/licenses/>.
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen <refentryinfo>
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen </authorgroup>
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen </refentryinfo>
4b6141c42497dc199618f95fa3f359615eecfaa0Tom Gundersen <refentrytitle>systemd-suspend.service</refentrytitle>
d3cf48f4bd3d69a276f17aa7c910e0b35215cabaLennart Poettering <refname>systemd-suspend.service</refname>
d3cf48f4bd3d69a276f17aa7c910e0b35215cabaLennart Poettering <refname>systemd-hibernate.service</refname>
d3cf48f4bd3d69a276f17aa7c910e0b35215cabaLennart Poettering <refname>systemd-hybrid-sleep.service</refname>
d3cf48f4bd3d69a276f17aa7c910e0b35215cabaLennart Poettering <refpurpose>System sleep state logic</refpurpose>
fe8db0c5ee3365a2fc80ee7ebffa238f9a0a2ae2Tom Gundersen </refnamediv>
85b5673b337048fa881a5afb1d00d1a7b95950fbTom Gundersen <refsynopsisdiv>
0ea51a1129b9984a3c6d96cef1b0e33c99b5e9cfTom Gundersen <para><filename>systemd-suspend.service</filename></para>
0ea51a1129b9984a3c6d96cef1b0e33c99b5e9cfTom Gundersen <para><filename>systemd-hibernate.service</filename></para>
0ea51a1129b9984a3c6d96cef1b0e33c99b5e9cfTom Gundersen <para><filename>systemd-hybrid-sleep.service</filename></para>
0ea51a1129b9984a3c6d96cef1b0e33c99b5e9cfTom Gundersen <para><filename>/usr/lib/systemd/system-sleep</filename></para>
85b5673b337048fa881a5afb1d00d1a7b95950fbTom Gundersen </refsynopsisdiv>
85b5673b337048fa881a5afb1d00d1a7b95950fbTom Gundersen <para><filename>systemd-suspend.service</filename> is a system
0ea51a1129b9984a3c6d96cef1b0e33c99b5e9cfTom Gundersen service that is pulled in by <filename>suspend.target</filename>
0ea51a1129b9984a3c6d96cef1b0e33c99b5e9cfTom Gundersen and is responsible for the actual system suspend. Similarly,
0ea51a1129b9984a3c6d96cef1b0e33c99b5e9cfTom Gundersen <filename>systemd-hibernate.service</filename> is pulled in by
fe8db0c5ee3365a2fc80ee7ebffa238f9a0a2ae2Tom Gundersen <filename>hibernate.target</filename> to execute the actual
d3cf48f4bd3d69a276f17aa7c910e0b35215cabaLennart Poettering hibernation. Finally,
d3cf48f4bd3d69a276f17aa7c910e0b35215cabaLennart Poettering <filename>systemd-hybrid-sleep.service</filename> is pulled in by
d3cf48f4bd3d69a276f17aa7c910e0b35215cabaLennart Poettering <filename>hybrid-sleep.target</filename> to execute hybrid
d3cf48f4bd3d69a276f17aa7c910e0b35215cabaLennart Poettering hibernation with system suspend.</para>
d3cf48f4bd3d69a276f17aa7c910e0b35215cabaLennart Poettering <para>Immediately before entering system suspend and/or
d3cf48f4bd3d69a276f17aa7c910e0b35215cabaLennart Poettering hibernation <filename>systemd-suspend.service</filename> (and the
d3cf48f4bd3d69a276f17aa7c910e0b35215cabaLennart Poettering other mentioned units, respectively) will run all executables in
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen <filename>/usr/lib/systemd/system-sleep/</filename> and pass two
1f6d9bc9ee894d4023b7eacea1754986f25bce57Tom Gundersen arguments to them. The first argument will be
4b6141c42497dc199618f95fa3f359615eecfaa0Tom Gundersen <literal>suspend</literal>, <literal>hibernate</literal>, or
1f6d9bc9ee894d4023b7eacea1754986f25bce57Tom Gundersen <literal>hybrid-sleep</literal> depending on the chosen action.
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen Immediately after leaving system suspend and/or hibernation the
f0c4cd7a2c2835a392b5b1807d8c506ab0af44deTom Gundersen same executables are run, but the first argument is now
1f6d9bc9ee894d4023b7eacea1754986f25bce57Tom Gundersen <literal>post</literal>. All executables in this directory are
f0c4cd7a2c2835a392b5b1807d8c506ab0af44deTom Gundersen executed in parallel, and execution of the action is not continued
1f6d9bc9ee894d4023b7eacea1754986f25bce57Tom Gundersen until all executables have finished.</para>
02b59d57e0c08231645120077f651151f5bb2babTom Gundersen <para>Note that scripts or binaries dropped in
f0c4cd7a2c2835a392b5b1807d8c506ab0af44deTom Gundersen <filename>/usr/lib/systemd/system-sleep/</filename> are intended
1f6d9bc9ee894d4023b7eacea1754986f25bce57Tom Gundersen for local use only and should be considered hacks. If applications
f0c4cd7a2c2835a392b5b1807d8c506ab0af44deTom Gundersen want to be notified of system suspend/hibernation and resume,
4b6141c42497dc199618f95fa3f359615eecfaa0Tom Gundersen there are much nicer interfaces available.</para>
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen <para>Note that
1f6d9bc9ee894d4023b7eacea1754986f25bce57Tom Gundersen <filename>systemd-hibernate.service</filename>, and
f0c4cd7a2c2835a392b5b1807d8c506ab0af44deTom Gundersen <filename>systemd-hybrid-sleep.service</filename>
4b6141c42497dc199618f95fa3f359615eecfaa0Tom Gundersen should never be executed directly. Instead, trigger system sleep
1f6d9bc9ee894d4023b7eacea1754986f25bce57Tom Gundersen states with a command such as <literal>systemctl suspend</literal>
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen or similar.</para>
1f6d9bc9ee894d4023b7eacea1754986f25bce57Tom Gundersen <para>Internally, this service will echo a string like
f0c4cd7a2c2835a392b5b1807d8c506ab0af44deTom Gundersen <literal>mem</literal> into <filename>/sys/power/state</filename>,
4b6141c42497dc199618f95fa3f359615eecfaa0Tom Gundersen to trigger the actual system suspend. What exactly is written
1f6d9bc9ee894d4023b7eacea1754986f25bce57Tom Gundersen where can be configured in the <literal>[Sleep]</literal> section
3bef724f7e7f7eaca69881548b06e221b77d7031Tom Gundersen of <filename>/etc/systemd/sleep.conf</filename> or a
1346b1f0388f4100bb3c2a2bb23bc881769c020cTom Gundersen <citerefentry><refentrytitle>systemd-sleep.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
4b6141c42497dc199618f95fa3f359615eecfaa0Tom Gundersen <para><command>systemd-sleep</command> understands the
f882c247ad59776c3a7753bb963c1f8e2386cb79Tom Gundersen following commands:</para>
1f6d9bc9ee894d4023b7eacea1754986f25bce57Tom Gundersen <variablelist>
1f6d9bc9ee894d4023b7eacea1754986f25bce57Tom Gundersen <xi:include href="standard-options.xml" xpointer="help" />
4b6141c42497dc199618f95fa3f359615eecfaa0Tom Gundersen <xi:include href="standard-options.xml" xpointer="version" />
4b6141c42497dc199618f95fa3f359615eecfaa0Tom Gundersen <varlistentry>
4b6141c42497dc199618f95fa3f359615eecfaa0Tom Gundersen <listitem><para>Suspend, hibernate, or put the system to
f579559b3a14c1f1ef96c372e7626c4733e6ef7dTom Gundersen hybrid sleep.</para>
<citerefentry><refentrytitle>systemd-sleep.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd.special</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd-halt.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>