]> git.ipfire.org Git - thirdparty/systemd.git/blame - man/systemd-analyze.xml
tmpfiles: fix compilation without acl support
[thirdparty/systemd.git] / man / systemd-analyze.xml
CommitLineData
359deb60
LP
1<?xml version='1.0'?> <!--*-nxml-*-->
2<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
3 "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
4
5<!--
6 This file is part of systemd.
7
8 Copyright 2012 Lennart Poettering
9
10 systemd is free software; you can redistribute it and/or modify it
11 under the terms of the GNU Lesser General Public License as published by
12 the Free Software Foundation; either version 2.1 of the License, or
13 (at your option) any later version.
14
15 systemd is distributed in the hope that it will be useful, but
16 WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 Lesser General Public License for more details.
19
20 You should have received a copy of the GNU Lesser General Public License
21 along with systemd; If not, see <http://www.gnu.org/licenses/>.
22-->
23
21ac6ff1
ZJS
24<refentry id="systemd-analyze"
25 xmlns:xi="http://www.w3.org/2001/XInclude">
359deb60
LP
26
27 <refentryinfo>
28 <title>systemd-analyze</title>
29 <productname>systemd</productname>
30
31 <authorgroup>
32 <author>
33 <contrib>Developer</contrib>
34 <firstname>Lennart</firstname>
35 <surname>Poettering</surname>
36 <email>lennart@poettering.net</email>
37 </author>
bb150966
HH
38 <author>
39 <contrib>Developer</contrib>
40 <firstname>Harald</firstname>
41 <surname>Hoyer</surname>
42 <email>harald@redhat.com</email>
43 </author>
359deb60
LP
44 </authorgroup>
45 </refentryinfo>
46
47 <refmeta>
48 <refentrytitle>systemd-analyze</refentrytitle>
49 <manvolnum>1</manvolnum>
50 </refmeta>
51
52 <refnamediv>
53 <refname>systemd-analyze</refname>
54 <refpurpose>Analyze system boot-up performance</refpurpose>
55 </refnamediv>
56
57 <refsynopsisdiv>
58 <cmdsynopsis>
fa3868c6
ZJS
59 <command>systemd-analyze</command>
60 <arg choice="opt" rep="repeat">OPTIONS</arg>
61 <arg>time</arg>
359deb60
LP
62 </cmdsynopsis>
63 <cmdsynopsis>
fa3868c6
ZJS
64 <command>systemd-analyze</command>
65 <arg choice="opt" rep="repeat">OPTIONS</arg>
66 <arg choice="plain">blame</arg>
359deb60 67 </cmdsynopsis>
bb150966 68 <cmdsynopsis>
fa3868c6
ZJS
69 <command>systemd-analyze</command>
70 <arg choice="opt" rep="repeat">OPTIONS</arg>
71 <arg choice="plain">critical-chain</arg>
72 <arg choice="opt" rep="repeat"><replaceable>UNIT</replaceable></arg>
bb150966 73 </cmdsynopsis>
359deb60 74 <cmdsynopsis>
fa3868c6
ZJS
75 <command>systemd-analyze</command>
76 <arg choice="opt" rep="repeat">OPTIONS</arg>
77 <arg choice="plain">plot</arg>
78 <arg choice="opt">&gt; file.svg</arg>
359deb60 79 </cmdsynopsis>
1700761b 80 <cmdsynopsis>
fa3868c6
ZJS
81 <command>systemd-analyze</command>
82 <arg choice="opt" rep="repeat">OPTIONS</arg>
83 <arg choice="plain">dot</arg>
84 <arg choice="opt" rep="repeat"><replaceable>PATTERN</replaceable></arg>
a65615ca 85 <arg choice="opt">&gt; file.dot</arg>
1700761b 86 </cmdsynopsis>
9ea9d4cf
LP
87 <cmdsynopsis>
88 <command>systemd-analyze</command>
89 <arg choice="opt" rep="repeat">OPTIONS</arg>
90 <arg choice="plain">dump</arg>
91 </cmdsynopsis>
a65615ca
LP
92 <cmdsynopsis>
93 <command>systemd-analyze</command>
94 <arg choice="opt" rep="repeat">OPTIONS</arg>
95 <arg choice="plain">set-log-level</arg>
96 <arg choice="opt"><replaceable>LEVEL</replaceable></arg>
97 </cmdsynopsis>
142c4eca
ZJS
98 <cmdsynopsis>
99 <command>systemd-analyze</command>
100 <arg choice="opt" rep="repeat">OPTIONS</arg>
101 <arg choice="plain">verify</arg>
102 <arg choice="opt" rep="repeat"><replaceable>FILES</replaceable></arg>
103 </cmdsynopsis>
359deb60
LP
104 </refsynopsisdiv>
105
106 <refsect1>
107 <title>Description</title>
108
109 <para><command>systemd-analyze</command> may be used
a65615ca
LP
110 to determine system boot-up performance statistics and
111 retrieve other state and tracing information from the
142c4eca
ZJS
112 system and service manager, and to verify the
113 correctness of unit files.</para>
359deb60
LP
114
115 <para><command>systemd-analyze time</command>
116 prints the time spent in the kernel before
117 userspace has been reached, the time spent in the
118 initial RAM disk (initrd) before normal system
e9dd9f95 119 userspace has been reached, and the time normal system
359deb60
LP
120 userspace took to initialize. Note that these
121 measurements simply measure the time passed up to the
122 point where all system services have been spawned, but
123 not necessarily until they fully finished
124 initialization or the disk is idle.</para>
125
126 <para><command>systemd-analyze blame</command> prints
127 a list of all running units, ordered by the time they
128 took to initialize. This information may be used to
129 optimize boot-up times. Note that the output might be
130 misleading as the initialization of one service might
131 be slow simply because it waits for the initialization
132 of another service to complete.</para>
133
fa3868c6 134 <para><command>systemd-analyze critical-chain [<replaceable>UNIT...</replaceable>]</command>
e9dd9f95 135 prints a tree of the time-critical chain of units
fa3868c6
ZJS
136 (for each of the specified <replaceable>UNIT</replaceable>s
137 or for the default target otherwise).
bb150966
HH
138 The time after the unit is active or started is printed
139 after the "@" character. The time the unit takes to
140 start is printed after the "+" character.
141 Note that the output might be misleading as the
142 initialization of one service might depend on socket
143 activation and because of the parallel execution
144 of units.</para>
145
359deb60
LP
146 <para><command>systemd-analyze plot</command> prints
147 an SVG graphic detailing which system services have
148 been started at what time, highlighting the time they
149 spent on initialization.</para>
150
9ea9d4cf 151 <para><command>systemd-analyze dot</command> generates
816f25e8
LP
152 textual dependency graph description in dot format for
153 further processing with the GraphViz
1700761b
SP
154 <citerefentry><refentrytitle>dot</refentrytitle><manvolnum>1</manvolnum></citerefentry>
155 tool. Use a command line like <command>systemd-analyze
816f25e8
LP
156 dot | dot -Tsvg > systemd.svg</command> to generate a
157 graphical dependency tree. Unless
1700761b 158 <option>--order</option> or <option>--require</option>
e9dd9f95 159 is passed, the generated graph will show both ordering
816f25e8
LP
160 and requirement dependencies. Optional pattern
161 globbing style specifications
162 (e.g. <filename>*.target</filename>) may be given at
163 the end. A unit dependency is included in the graph if
164 any of these patterns match either the origin or
165 destination node.</para>
e55933db 166
9ea9d4cf
LP
167 <para><command>systemd-analyze dump</command> outputs
168 a (usually very long) human-readable serialization of
169 the complete server state. Its format is subject to
170 change without notice and should not be parsed by
171 applications.</para>
172
a65615ca
LP
173 <para><command>systemd-analyze set-log-level
174 <replaceable>LEVEL</replaceable></command> changes the
175 current log level of the <command>systemd</command>
176 daemon to <replaceable>LEVEL</replaceable> (accepts
177 the same values as <option>--log-level=</option>
178 described in
179 <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>).</para>
180
142c4eca
ZJS
181 <para><command>systemd-analyze verify</command> will
182 load unit files and print warnings if any errors are
183 detected. Files specified on the command line will be
184 loaded, but also any other units referenced by
185 them. This command works by prepending the directories
186 for all command line arguments at the beginning of the
187 unit load path, which means that all units files found
188 in those directories will be used in preference to the
189 unit files found in the standard locations, even if
190 not listed explicitly.</para>
191
e9dd9f95 192 <para>If no command is passed, <command>systemd-analyze
359deb60
LP
193 time</command> is implied.</para>
194
195 </refsect1>
196
197 <refsect1>
198 <title>Options</title>
199
200 <para>The following options are understood:</para>
201
202 <variablelist>
359deb60
LP
203 <varlistentry>
204 <term><option>--user</option></term>
205
142c4eca
ZJS
206 <listitem><para>Operates on the user
207 systemd instance.</para></listitem>
359deb60 208 </varlistentry>
1700761b 209
3cd26e7c
LP
210 <varlistentry>
211 <term><option>--system</option></term>
212
142c4eca
ZJS
213 <listitem><para>Operates on the system
214 systemd instance. This is the implied
215 default.</para></listitem>
3cd26e7c
LP
216 </varlistentry>
217
1700761b
SP
218 <varlistentry>
219 <term><option>--order</option></term>
220 <term><option>--require</option></term>
221
222 <listitem><para>When used in
223 conjunction with the
224 <command>dot</command> command (see
225 above), selects which dependencies are
226 shown in the dependency graph. If
79640424 227 <option>--order</option> is passed,
1700761b
SP
228 only dependencies of type
229 <varname>After=</varname> or
230 <varname>Before=</varname> are
231 shown. If <option>--require</option>
79640424 232 is passed, only dependencies of type
1700761b
SP
233 <varname>Requires=</varname>,
234 <varname>RequiresOverridable=</varname>,
235 <varname>Requisite=</varname>,
236 <varname>RequisiteOverridable=</varname>,
237 <varname>Wants=</varname> and
238 <varname>Conflicts=</varname> are
e9dd9f95 239 shown. If neither is passed, this shows
1700761b
SP
240 dependencies of all these
241 types.</para></listitem>
242 </varlistentry>
e55933db
ŁS
243
244 <varlistentry>
245 <term><option>--from-pattern=</option></term>
246 <term><option>--to-pattern=</option></term>
247
248 <listitem><para>When used in
249 conjunction with the
250 <command>dot</command> command (see
e9dd9f95 251 above), this selects which relationships
e55933db
ŁS
252 are shown in the dependency graph.
253 They both require
254 <citerefentry><refentrytitle>glob</refentrytitle><manvolnum>7</manvolnum></citerefentry>
255 patterns as arguments, which are
e9dd9f95
JSJ
256 matched against left-hand and
257 right-hand, respectively, nodes of a
e55933db 258 relationship. Each of these can be
e9dd9f95
JSJ
259 used more than once, which means a
260 unit name must match one of the given
e55933db
ŁS
261 values.</para></listitem>
262 </varlistentry>
bb150966
HH
263
264 <varlistentry>
265 <term><option>--fuzz=</option><replaceable>timespan</replaceable></term>
266
267 <listitem><para>When used in conjunction
268 with the <command>critical-chain</command>
269 command (see above), also show units, which
270 finished <replaceable>timespan</replaceable> earlier, than the
271 latest unit in the same level. The unit of
272 <replaceable>timespan</replaceable> is seconds
273 unless specified with a different unit,
e9dd9f95 274 e.g. "50ms".</para></listitem>
bb150966 275 </varlistentry>
9ea9d4cf 276
142c4eca
ZJS
277 <varlistentry>
278 <term><option>--no-man</option></term>
279
280 <listitem><para>Do not invoke man to verify the existence
281 of man pages listen in <varname>Documentation=</varname>.
282 </para></listitem>
283 </varlistentry>
284
4f50d2ef
ZJS
285 <xi:include href="user-system-options.xml" xpointer="host" />
286 <xi:include href="user-system-options.xml" xpointer="machine" />
287
dfdebb1b
ZJS
288 <xi:include href="standard-options.xml" xpointer="help" />
289 <xi:include href="standard-options.xml" xpointer="version" />
290 <xi:include href="standard-options.xml" xpointer="no-pager" />
359deb60
LP
291 </variablelist>
292
293 </refsect1>
294
295 <refsect1>
296 <title>Exit status</title>
297
b040723e 298 <para>On success, 0 is returned, a non-zero failure
359deb60
LP
299 code otherwise.</para>
300 </refsect1>
301
816f25e8 302 <refsect1>
142c4eca 303 <title>Examples for <command>dot</command></title>
816f25e8 304
142c4eca
ZJS
305 <example>
306 <title>Plots all dependencies of any unit whose
307 name starts with <literal>avahi-daemon</literal></title>
816f25e8 308
142c4eca
ZJS
309 <programlisting>$ systemd-analyze dot 'avahi-daemon.*' | dot -Tsvg > avahi.svg
310 $ eog avahi.svg</programlisting>
311 </example>
816f25e8 312
142c4eca
ZJS
313 <example>
314 <title>Plots the dependencies between all known target units</title>
816f25e8 315
142c4eca 316 <programlisting>systemd-analyze dot --to-pattern='*.target' --from-pattern='*.target' | dot -Tsvg > targets.svg
816f25e8 317$ eog targets.svg</programlisting>
142c4eca
ZJS
318 </example>
319 </refsect1>
816f25e8 320
142c4eca
ZJS
321 <refsect1>
322 <title>Examples for <command>verify</command></title>
323
324 <para>The following errors are currently detected:</para>
325 <itemizedlist>
326 <listitem><para>unknown sections and
327 directives, </para></listitem>
328
329 <listitem><para>missing dependencies which are
330 required to start the given unit,
331 </para></listitem>
332
333 <listitem><para>man pages listed in
334 <varname>Documentation=</varname> which are
335 not found in the system,</para></listitem>
336
337 <listitem><para>commands listed in
338 <varname>ExecStart=</varname> and similar
339 which are not found in the system or not
340 executable.</para></listitem>
341 </itemizedlist>
342
343 <example>
344 <title>Misspelt directives</title>
345
346 <programlisting>$ cat ./user.slice
347[Unit]
348WhatIsThis=11
349Documentation=man:nosuchfile(1)
350Requires=different.service
351
352[Service]
353Desription=x
354
ee9c4ff4 355$ systemd-analyze verify ./user.slice
142c4eca
ZJS
356[./user.slice:9] Unknown lvalue 'WhatIsThis' in section 'Unit'
357[./user.slice:13] Unknown section 'Service'. Ignoring.
358Error: org.freedesktop.systemd1.LoadFailed:
359 Unit different.service failed to load:
360 No such file or directory.
361Failed to create user.slice/start: Invalid argument
362user.slice: man nosuchfile(1) command failed with code 16
363 </programlisting>
364 </example>
365
366 <example>
367 <title>Missing service units</title>
368
369 <programlisting>$ tail ./a.socket ./b.socket
370==> ./a.socket &lt;==
371[Socket]
372ListenStream=100
373
374==> ./b.socket &lt;==
375[Socket]
376ListenStream=100
377Accept=yes
378
ee9c4ff4 379$ systemd-analyze verify ./a.socket ./b.socket
142c4eca
ZJS
380Service a.service not loaded, a.socket cannot be started.
381Service b@0.service not loaded, b.socket cannot be started.
382 </programlisting>
383 </example>
816f25e8
LP
384 </refsect1>
385
21ac6ff1 386 <xi:include href="less-variables.xml" />
9ea9d4cf 387
359deb60
LP
388 <refsect1>
389 <title>See Also</title>
390 <para>
391 <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
392 <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>
393 </para>
394 </refsect1>
395
396</refentry>