Files
systemd/man/shutdown.xml
hanjinpeng 0e7033215d man: clarify that --when= is a lower bound, not a condition
`systemctl reboot --when=yesterday` reboots the machine immediately, which
surprised users enough to be reported as a bug. It is not one: the timestamp
passed to --when= (and to ScheduleShutdown(), and to shutdown(8)) declares the
earliest point in time the action may be taken, it is not a condition that is
evaluated and that could fail.

Behaving any differently would be racy and surprising: "--when=now" refers to
the past by the time the request is processed, and "--when=+50ms" may well have
elapsed already due to scheduling latencies. In both cases we must still carry
out the action the user asked for.

Document the semantics explicitly in systemctl(1), shutdown(8) and the
org.freedesktop.login1(5) D-Bus interface documentation.

Fixes: #42437
2026-07-14 09:43:12 +01:00

166 lines
5.8 KiB
XML

<?xml version='1.0'?> <!--*-nxml-*-->
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="shutdown"
xmlns:xi="http://www.w3.org/2001/XInclude">
<refentryinfo>
<title>shutdown</title>
<productname>systemd</productname>
</refentryinfo>
<refmeta>
<refentrytitle>shutdown</refentrytitle>
<manvolnum>8</manvolnum>
</refmeta>
<refnamediv>
<refname>shutdown</refname>
<refpurpose>Halt, power off or reboot the machine</refpurpose>
</refnamediv>
<refsynopsisdiv>
<cmdsynopsis>
<command>shutdown</command>
<arg choice="opt" rep="repeat">OPTIONS</arg>
<arg choice="opt">TIME</arg>
<arg choice="opt" rep="repeat">WALL</arg>
</cmdsynopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>
<para><command>shutdown</command> may be used to halt, power off, or reboot the machine.</para>
<para>The first argument may be a time string (which is usually
<literal>now</literal>). Optionally, this may be followed by a
wall message to be sent to all logged-in users before going
down.</para>
<para>The time string may either be in the format
<literal>hh:mm</literal> for hour/minutes specifying the time to
execute the shutdown at, specified in 24h clock format.
Alternatively it may be in the syntax <literal>+m</literal>
referring to the specified number of minutes m from now.
<literal>now</literal> is an alias for <literal>+0</literal>, i.e.
for triggering an immediate shutdown. If no time argument is
specified, <literal>+1</literal> is implied.</para>
<para>The time string specifies the earliest point in time the shutdown may take place; it is a lower
bound only: the shutdown is executed as soon as possible, but not before the specified time. Specifying a
time that already elapsed (for example an <literal>hh:mm</literal> time earlier today) is not an error and
results in an immediate shutdown. See the discussion of <option>--when=</option> in
<citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry> for
details.</para>
<para>Note that to specify a wall message you must specify a time
argument, too.</para>
<para>If the time argument is used, 5 minutes before the system
goes down the <filename>/run/nologin</filename> file is created to
ensure that further logins shall not be allowed.</para>
</refsect1>
<refsect1>
<title>Options</title>
<para>The following options are understood:</para>
<variablelist>
<varlistentry>
<term><option>--help</option></term>
<xi:include href="standard-options.xml" xpointer="help-text" />
</varlistentry>
<varlistentry>
<term><option>-H</option></term>
<term><option>--halt</option></term>
<listitem><para>Halt the machine.</para></listitem>
</varlistentry>
<varlistentry>
<term><option>-P</option></term>
<term><option>--poweroff</option></term>
<listitem><para>Power the machine off (the default).</para></listitem>
</varlistentry>
<varlistentry>
<term><option>-r</option></term>
<term><option>--reboot</option></term>
<listitem><para>Reboot the machine.</para></listitem>
</varlistentry>
<varlistentry>
<term><option>-h</option></term>
<listitem><para>The same as <option>--poweroff</option>, but does not override the action to take if
it is "halt". E.g. <command>shutdown --reboot -h</command> means "poweroff", but <command>shutdown
--halt -h</command> means "halt".</para></listitem>
</varlistentry>
<varlistentry>
<term><option>-k</option></term>
<listitem><para>Do not halt, power off, or reboot, but just write the wall message.</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--no-wall</option></term>
<listitem><para>Do not send wall message before halt, power off, or reboot.</para></listitem>
</varlistentry>
<varlistentry>
<term><option>-c</option></term>
<listitem><para>Cancel a pending shutdown. This may be used to cancel the effect of an invocation of
<command>shutdown</command> with a time argument that is not <literal>+0</literal> or
<literal>now</literal>.</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--show</option></term>
<listitem><para>Show a pending shutdown action and time if
there is any.</para>
<xi:include href="version-info.xml" xpointer="v250"/></listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1>
<title>Exit status</title>
<para>On success, 0 is returned, a non-zero failure code
otherwise.</para>
</refsect1>
<refsect1>
<title>Compatibility</title>
<para>The <command> shutdown</command> command in previous init systems (including sysvinit) defaulted to
single-user mode instead of powering off the machine. To change into single-user mode, use
<command>systemctl rescue</command> instead.</para>
</refsect1>
<refsect1>
<title>See Also</title>
<para><simplelist type="inline">
<member><citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry></member>
<member><citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry></member>
<member><citerefentry><refentrytitle>halt</refentrytitle><manvolnum>8</manvolnum></citerefentry></member>
<member><citerefentry project='man-pages'><refentrytitle>wall</refentrytitle><manvolnum>1</manvolnum></citerefentry></member>
</simplelist></para>
</refsect1>
</refentry>