1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
'\" t
.TH "SYSTEMD\-POWEROFF\&.SERVICE" "8" "" "systemd 255" "systemd-poweroff.service"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
systemd-poweroff.service, systemd-halt.service, systemd-reboot.service, systemd-kexec.service, systemd-shutdown \- System shutdown logic
.SH "SYNOPSIS"
.PP
systemd\-poweroff\&.service
.PP
systemd\-halt\&.service
.PP
systemd\-reboot\&.service
.PP
systemd\-kexec\&.service
.PP
/usr/lib/systemd/systemd\-shutdown
.PP
/usr/lib/systemd/system\-shutdown/
.SH "DESCRIPTION"
.PP
systemd\-poweroff\&.service
is a system service that is pulled in by
poweroff\&.target
and is responsible for the actual system power\-off operation\&. Similarly,
systemd\-halt\&.service
is pulled in by
halt\&.target,
systemd\-reboot\&.service
by
reboot\&.target
and
systemd\-kexec\&.service
by
kexec\&.target
to execute the respective actions\&.
.PP
When these services are run, they ensure that PID 1 is replaced by the
/usr/lib/systemd/systemd\-shutdown
tool which is then responsible for the actual shutdown\&. Before shutting down, this binary will try to unmount all remaining file systems (or at least remount them read\-only), disable all remaining swap devices, detach all remaining storage devices and kill all remaining processes\&.
.PP
It is necessary to have this code in a separate binary because otherwise rebooting after an upgrade might be broken\ \&\(em the running PID 1 could still depend on libraries which are not available any more, thus keeping the file system busy, which then cannot be re\-mounted read\-only\&.
.PP
Shortly before executing the actual system power\-off/halt/reboot/kexec
systemd\-shutdown
will run all executables in
/usr/lib/systemd/system\-shutdown/
and pass one arguments to them: either
"poweroff",
"halt",
"reboot", or
"kexec", depending on the chosen action\&. All executables in this directory are executed in parallel, and execution of the action is not continued before all executables finished\&. Note that these executables are run
\fIafter\fR
all services have been shut down, and after most mounts have been unmounted (the root file system as well as
/run/
and various API file systems are still around though)\&. This means any programs dropped into this directory must be prepared to run in such a limited execution environment and not rely on external services or hierarchies such as
/var/
to be around (or writable)\&.
.PP
Note that
systemd\-poweroff\&.service
(and the related units) should never be executed directly\&. Instead, trigger system shutdown with a command such as
"systemctl poweroff"\&.
.PP
Another form of shutdown is provided by the
\fBsystemd-soft-reboot.service\fR(8)
functionality\&. It reboots only the OS userspace, leaving the kernel, firmware, and hardware as it is\&.
.SH "SEE ALSO"
.PP
\fBsystemd\fR(1),
\fBsystemctl\fR(1),
\fBsystemd.special\fR(7),
\fBreboot\fR(2),
\fBsystemd-suspend.service\fR(8),
\fBsystemd-soft-reboot.service\fR(8),
\fBbootup\fR(7)
|