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">
6 This file is part of systemd.
8 Copyright 2012 Lennart Poettering
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.
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.
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/>.
24 <refentry id="journalctl"
25 xmlns:xi="http://www.w3.org/2001/XInclude">
28 <title>journalctl</title>
29 <productname>systemd</productname>
33 <contrib>Developer</contrib>
34 <firstname>Lennart</firstname>
35 <surname>Poettering</surname>
36 <email>lennart@poettering.net</email>
42 <refentrytitle>journalctl</refentrytitle>
43 <manvolnum>1</manvolnum>
47 <refname>journalctl</refname>
48 <refpurpose>Query the systemd journal</refpurpose>
53 <command>journalctl</command>
54 <arg choice="opt" rep="repeat">OPTIONS</arg>
55 <arg choice="opt" rep="repeat">MATCHES</arg>
60 <title>Description</title>
62 <para><command>journalctl</command> may be used to
63 query the contents of the
64 <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>
66 <citerefentry><refentrytitle>systemd-journald.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>.</para>
68 <para>If called without parameters, it will show the full
69 contents of the journal, starting with the oldest
70 entry collected.</para>
72 <para>If one or more match arguments are passed, the
73 output is filtered accordingly. A match is in the
74 format <literal>FIELD=VALUE</literal>,
75 e.g. <literal>_SYSTEMD_UNIT=httpd.service</literal>,
76 referring to the components of a structured journal
78 <citerefentry><refentrytitle>systemd.journal-fields</refentrytitle><manvolnum>7</manvolnum></citerefentry>
79 for a list of well-known fields. If multiple matches
80 are specified matching different fields, the log
81 entries are filtered by both, i.e. the resulting output
82 will show only entries matching all the specified
83 matches of this kind. If two matches apply to the same
84 field, then they are automatically matched as
85 alternatives, i.e. the resulting output will show
86 entries matching any of the specified matches for the
87 same field. Finally, the character
88 <literal>+</literal> may appears as a separate word
89 between other terms on the command line. This causes
90 all matches before and after to be combined in a
91 disjunction (i.e. logical OR).</para>
93 <para>As shortcuts for a few types of field/value
94 matches, file paths may be specified. If a file path
95 refers to an executable file, this is equivalent to an
96 <literal>_EXE=</literal> match for the canonicalized
97 binary path. Similarly, if a path refers to a device
98 node, this is equivalent to a
99 <literal>_KERNEL_DEVICE=</literal> match for the
102 <para>Additional contraints may be added using options
103 <option>--boot</option>, <option>--unit=</option>,
104 etc, to futher limit what entries will be shown
105 (logical AND).</para>
107 <para>Output is interleaved from all accessible
108 journal files, whether they are rotated or currently
109 being written, and regardless of whether they belong to the
110 system itself or are accessible user journals.</para>
112 <para>The set of journal files which will be used
113 can be modified using the <option>--user</option>,
114 <option>--system</option>, <option>--directory</option>,
115 and <option>--file</option> options, see below.</para>
117 <para>All users are granted access to their private
118 per-user journals. However, by default, only root and
119 users who are members of the <literal>systemd-journal</literal>
120 group get access to the system journal and the
121 journals of other users.</para>
123 <para>The output is paged through
124 <command>less</command> by default, and long lines are
125 "truncated" to screen width. The hidden part can be
126 viewed by using the left-arrow and right-arrow
127 keys. Paging can be disabled; see the
128 <option>--no-pager</option> option and the "Environment"
129 section below.</para>
131 <para>When outputing to a tty, lines are colored
132 according to priority: lines of level ERROR and higher
133 are colored red; lines of level NOTICE and higher are
134 highlighted; other lines are displayed normally.
139 <title>Options</title>
141 <para>The following options are understood:</para>
145 <term><option>--no-full</option></term>
146 <term><option>--full</option></term>
147 <term><option>-l</option></term>
149 <listitem><para>Ellipsize fields when
150 they do not fit in available columns.
151 The default is to show full fields,
152 allowing them to wrap or be truncated
153 by the pager, if one is used.</para>
155 <para>The old options
156 <option>-l</option>/<option>--full</option>
157 are not useful anymore, except to undo
158 <option>--no-full</option>.</para></listitem>
162 <term><option>-a</option></term>
163 <term><option>--all</option></term>
165 <listitem><para>Show all fields in
166 full, even if they include unprintable
167 characters or are very
168 long.</para></listitem>
172 <term><option>-f</option></term>
173 <term><option>--follow</option></term>
175 <listitem><para>Show only the most recent
176 journal entries, and continuously print
177 new entries as they are appended to
178 the journal.</para></listitem>
182 <term><option>-e</option></term>
183 <term><option>--pager-end</option></term>
185 <listitem><para>Immediately jump to
186 the end of the journal inside the
187 implied pager tool. This implies
188 <option>-n1000</option> to guarantee
189 that the pager will not buffer logs of
190 unbounded size. This may be overridden
191 with an explicit <option>-n</option>
192 with some other numeric value on the
193 command line. Note that this option is
194 only supported for the
195 <citerefentry project='man-pages'><refentrytitle>less</refentrytitle><manvolnum>1</manvolnum></citerefentry>
196 pager.</para></listitem>
200 <term><option>-n</option></term>
201 <term><option>--lines=</option></term>
203 <listitem><para>Show the most recent
204 journal events and limit the number of
206 <option>--follow</option> is used,
207 this option is implied. The argument,
208 a positive integer, is optional, and
209 defaults to 10. </para></listitem>
213 <term><option>--no-tail</option></term>
215 <listitem><para>Show all stored output
216 lines, even in follow mode. Undoes the
218 <option>--lines=</option>.</para></listitem>
222 <term><option>-r</option></term>
223 <term><option>--reverse</option></term>
225 <listitem><para>Reverse output so that the newest
226 entries are displayed first.</para></listitem>
230 <term><option>-o</option></term>
231 <term><option>--output=</option></term>
233 <listitem><para>Controls the
234 formatting of the journal entries that
235 are shown. Takes one of the following options:
240 <option>short</option>
244 and generates an output
245 that is mostly identical
247 classic syslog files,
249 journal entry.</para>
255 <option>short-iso</option>
258 <para>is very similar,
260 wallclock timestamps.
267 <option>short-precise</option>
270 <para>is very similar,
272 with full microsecond
280 <option>short-monotonic</option>
283 <para>is very similar,
285 timestamps instead of
286 wallclock timestamps.
293 <option>verbose</option>
297 full-structured entry
298 items with all fields.
305 <option>export</option>
309 journal into a binary
310 (but mostly text-based)
314 url="http://www.freedesktop.org/wiki/Software/systemd/export">Journal
315 Export Format</ulink>
323 <option>json</option>
326 <para>formats entries
327 as JSON data structures,
328 one per line (see <ulink
329 url="http://www.freedesktop.org/wiki/Software/systemd/json">Journal
330 JSON Format</ulink> for
331 more information).</para>
337 <option>json-pretty</option>
340 <para>formats entries as
341 JSON data structures,
343 multiple lines in order
345 readable by humans.</para>
351 <option>json-sse</option>
354 <para>formats entries as
355 JSON data structures,
357 format suitable for <ulink
358 url="https://developer.mozilla.org/en-US/docs/Server-sent_events/Using_server-sent_events">Server-Sent
359 Events</ulink>.</para>
368 <para>generates a very
371 message of each journal
372 entry with no metadata,
373 not even a timestamp.
382 <term><option>-x</option></term>
383 <term><option>--catalog</option></term>
385 <listitem><para>Augment log lines with
386 explanation texts from the message
387 catalog. This will add explanatory
388 help texts to log messages in the
389 output where this is available. These
390 short help texts will explain the
391 context of an error or log event,
392 possible solutions, as well as
393 pointers to support forums, developer
394 documentation, and any other relevant
395 manuals. Note that help texts are not
396 available for all messages, but only
397 for selected ones. For more
398 information on the message catalog,
399 please refer to the <ulink
400 url="http://www.freedesktop.org/wiki/Software/systemd/catalog">Message
402 Documentation</ulink>.</para>
404 <para>Note: when attaching
405 <command>journalctl</command> output
406 to bug reports, please do
407 <emphasis>not</emphasis> use
408 <option>-x</option>.</para>
413 <term><option>-q</option></term>
414 <term><option>--quiet</option></term>
416 <listitem><para>Suppresses any warning
417 messages regarding inaccessible system
418 journals when run as a normal
419 user.</para></listitem>
423 <term><option>-m</option></term>
424 <term><option>--merge</option></term>
426 <listitem><para>Show entries
427 interleaved from all available
428 journals, including remote
429 ones.</para></listitem>
433 <term><option>-b <optional><replaceable>ID</replaceable></optional><optional><replaceable>±offset</replaceable></optional></option></term>
434 <term><option>--boot=<optional><replaceable>ID</replaceable></optional><optional><replaceable>±offset</replaceable></optional></option></term>
436 <listitem><para>Show messages from a specific
437 boot. This will add a match for
438 <literal>_BOOT_ID=</literal>.</para>
440 <para>The argument may be empty, in which case
441 logs for the current boot will be shown.</para>
443 <para>If the boot ID is omitted, a positive
444 <replaceable>offset</replaceable> will look up
445 the boots starting from the beginning of the
446 journal, and a equal-or-less-than zero
447 <replaceable>offset</replaceable> will look up
448 boots starting from the end of the
449 journal. Thus, <constant>1</constant> means the
450 first boot found in the journal in
451 chronological order, <constant>2</constant> the
452 second and so on; while <constant>-0</constant>
453 is the last boot, <constant>-1</constant> the
454 boot before last, and so on. An empty
455 <replaceable>offset</replaceable> is equivalent
456 to specifying <constant>-0</constant>, except
457 when the current boot is not the last boot
458 (e.g. because <option>--directory</option> was
459 specified to look at logs from a different
462 <para>If the 32-character
463 <replaceable>ID</replaceable> is specified, it
464 may optionally be followed by
465 <replaceable>offset</replaceable> which
466 identifies the boot relative to the one given by
467 boot <replaceable>ID</replaceable>. Negative
468 values mean earlier boots and a positive values
470 <replaceable>offset</replaceable> is not
471 specified, a value of zero is assumed, and the
472 logs for the boot given by
473 <replaceable>ID</replaceable> are shown.
480 <term><option>--list-boots</option></term>
482 <listitem><para>Show a tabular list of
483 boot numbers (relative to the current
484 boot), their IDs, and the timestamps
485 of the first and last message
486 pertaining to the boot.
491 <term><option>-k</option></term>
492 <term><option>--dmesg</option></term>
494 <listitem><para>Show only kernel messages. This
495 implies <option>-b</option> and adds the match
496 <literal>_TRANSPORT=kernel</literal>.
501 <term><option>-u</option></term>
502 <term><option>--unit=<replaceable>UNIT</replaceable>|<replaceable>PATTERN</replaceable></option></term>
504 <listitem><para>Show messages for the
505 specified systemd unit
506 <replaceable>UNIT</replaceable>, or
507 for any of the units matched by
508 <replaceable>PATTERN</replaceable>.
509 If a pattern is specified, a list of
510 unit names found in the journal is
511 compared with the specified pattern
512 and all that match are used. For each
513 unit name, a match is added for
514 messages from the unit
515 (<literal>_SYSTEMD_UNIT=<replaceable>UNIT</replaceable></literal>),
516 along with additional matches for
517 messages from systemd and messages
518 about coredumps for the specified
521 <para>This parameter can be specified
522 multiple times.</para></listitem>
526 <term><option>--user-unit=</option></term>
528 <listitem><para>Show messages for the
529 specified user session unit. This will
530 add a match for messages from the unit
531 (<literal>_SYSTEMD_USER_UNIT=</literal>
532 and <literal>_UID=</literal>) and
533 additional matches for messages from
534 session systemd and messages about
535 coredumps for the specified unit.</para>
536 <para>This parameter can be specified multiple times.
541 <term><option>-p</option></term>
542 <term><option>--priority=</option></term>
544 <listitem><para>Filter output by
545 message priorities or priority
546 ranges. Takes either a single numeric
547 or textual log level (i.e. between
548 0/<literal>emerg</literal> and
549 7/<literal>debug</literal>), or a
550 range of numeric/text log levels in
551 the form FROM..TO. The log levels are
552 the usual syslog log levels as
554 <citerefentry project='man-pages'><refentrytitle>syslog</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
555 i.e. <literal>emerg</literal> (0),
556 <literal>alert</literal> (1),
557 <literal>crit</literal> (2),
558 <literal>err</literal> (3),
559 <literal>warning</literal> (4),
560 <literal>notice</literal> (5),
561 <literal>info</literal> (6),
562 <literal>debug</literal> (7). If a
563 single log level is specified, all
564 messages with this log level or a
565 lower (hence more important) log level
566 are shown. If a range is specified, all
567 messages within the range are shown,
568 including both the start and the end
569 value of the range. This will add
570 <literal>PRIORITY=</literal> matches
572 priorities.</para></listitem>
576 <term><option>-c</option></term>
577 <term><option>--cursor=</option></term>
579 <listitem><para>Start showing entries
580 from the location in the journal
581 specified by the passed
582 cursor.</para></listitem>
586 <term><option>--after-cursor=</option></term>
588 <listitem><para>Start showing entries
589 from the location in the journal
590 <emphasis>after</emphasis> the
591 location specified by the this cursor.
592 The cursor is shown when the
593 <option>--show-cursor</option> option
594 is used.</para></listitem>
598 <term><option>--show-cursor</option></term>
600 <listitem><para>The cursor is shown after the last
601 entry after two dashes:</para>
602 <programlisting>-- cursor: s=0639...</programlisting>
603 <para>The format of the cursor is private
604 and subject to change.</para></listitem>
608 <term><option>--since=</option></term>
609 <term><option>--until=</option></term>
611 <listitem><para>Start showing entries
612 on or newer than the specified date,
613 or on or older than the specified
614 date, respectively. Date specifications
615 should be of the format
616 <literal>2012-10-30 18:17:16</literal>.
617 If the time part is omitted,
618 <literal>00:00:00</literal> is assumed.
619 If only the seconds component is omitted,
620 <literal>:00</literal> is assumed. If the
621 date component is omitted, the current
622 day is assumed. Alternatively the strings
623 <literal>yesterday</literal>,
624 <literal>today</literal>,
625 <literal>tomorrow</literal> are
626 understood, which refer to 00:00:00 of
627 the day before the current day, the
628 current day, or the day after the
629 current day, respectively. <literal>now</literal>
630 refers to the current time. Finally,
631 relative times may be specified,
632 prefixed with <literal>-</literal> or
633 <literal>+</literal>, referring to
634 times before or after the current
635 time, respectively.</para></listitem>
639 <term><option>-F</option></term>
640 <term><option>--field=</option></term>
642 <listitem><para>Print all possible
643 data values the specified field can
644 take in all entries of the
645 journal.</para></listitem>
649 <term><option>--system</option></term>
650 <term><option>--user</option></term>
652 <listitem><para>Show messages from
653 system services and the kernel (with
654 <option>--system</option>). Show
655 messages from service of current user
656 (with <option>--user</option>).
657 If neither is specified, show all
658 messages that the user can see.
663 <term><option>-M</option></term>
664 <term><option>--machine=</option></term>
666 <listitem><para>Show messages from a
667 running, local container. Specify a
668 container name to connect
669 to.</para></listitem>
673 <term><option>-D <replaceable>DIR</replaceable></option></term>
674 <term><option>--directory=<replaceable>DIR</replaceable></option></term>
676 <listitem><para>Takes a directory path
677 as argument. If specified, journalctl
678 will operate on the specified journal
680 <replaceable>DIR</replaceable> instead
681 of the default runtime and system
682 journal paths.</para></listitem>
686 <term><option>--file=<replaceable>GLOB</replaceable></option></term>
688 <listitem><para>Takes a file glob as an
689 argument. If specified, journalctl will
690 operate on the specified journal files
691 matching <replaceable>GLOB</replaceable>
692 instead of the default runtime and
693 system journal paths. May be specified
694 multiple times, in which case files will
695 be suitably interleaved.</para></listitem>
699 <term><option>--root=<replaceable>ROOT</replaceable></option></term>
701 <listitem><para>Takes a directory path
702 as an argument. If specified, journalctl
703 will operate on catalog file hierarchy
704 underneath the specified directory
705 instead of the root directory
706 (e.g. <option>--update-catalog</option>
708 <filename><replaceable>ROOT</replaceable>/var/lib/systemd/catalog/database</filename>).
713 <term><option>--new-id128</option></term>
715 <listitem><para>Instead of showing
716 journal contents, generate a new 128-bit
717 ID suitable for identifying
718 messages. This is intended for usage
719 by developers who need a new
720 identifier for a new message they
721 introduce and want to make
722 recognizable. This will print the new ID in
723 three different formats which can be
724 copied into source code or
725 similar.</para></listitem>
729 <term><option>--header</option></term>
731 <listitem><para>Instead of showing
732 journal contents, show internal header
733 information of the journal fields
734 accessed.</para></listitem>
738 <term><option>--disk-usage</option></term>
740 <listitem><para>Shows the current disk
742 journal files.</para></listitem>
746 <term><option>--list-catalog
747 <optional><replaceable>128-bit-ID...</replaceable></optional>
750 <listitem><para>List the contents of
751 the message catalog as a table of
752 message IDs, plus their short
753 description strings.</para>
756 <replaceable>128-bit-ID</replaceable>s are
757 specified, only those entries are shown.
763 <term><option>--dump-catalog
764 <optional><replaceable>128-bit-ID...</replaceable></optional>
767 <listitem><para>Show the contents of
768 the message catalog, with entries
769 separated by a line consisting of two
770 dashes and the ID (the format is the
771 same as <filename>.catalog</filename>
775 <replaceable>128-bit-ID</replaceable>s are
776 specified, only those entries are shown.
782 <term><option>--update-catalog</option></term>
784 <listitem><para>Update the message
785 catalog index. This command needs to
786 be executed each time new catalog
787 files are installed, removed, or
788 updated to rebuild the binary catalog
789 index.</para></listitem>
793 <term><option>--setup-keys</option></term>
795 <listitem><para>Instead of showing
796 journal contents, generate a new key
797 pair for Forward Secure Sealing
798 (FSS). This will generate a sealing
799 key and a verification key. The
800 sealing key is stored in the journal
801 data directory and shall remain on the
802 host. The verification key should be
803 stored externally. Refer to the
804 <option>Seal=</option> option in
805 <citerefentry><refentrytitle>journald.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>
806 for information on Forward Secure
807 Sealing and for a link to a refereed
808 scholarly paper detailing the
809 cryptographic theory it is based on.
814 <term><option>--force</option></term>
817 <option>--setup-keys</option> is passed and
818 Forward Secure Sealing (FSS) has already been
819 configured, recreate FSS keys.</para></listitem>
823 <term><option>--interval=</option></term>
825 <listitem><para>Specifies the change
826 interval for the sealing key when
827 generating an FSS key pair with
828 <option>--setup-keys</option>. Shorter
829 intervals increase CPU consumption but
830 shorten the time range of
832 alterations. Defaults to
833 15min.</para></listitem>
837 <term><option>--verify</option></term>
839 <listitem><para>Check the journal file
840 for internal consistency. If the
841 file has been generated with FSS
842 enabled and the FSS verification key
843 has been specified with
844 <option>--verify-key=</option>,
845 authenticity of the journal file is
846 verified.</para></listitem>
850 <term><option>--verify-key=</option></term>
852 <listitem><para>Specifies the FSS
853 verification key to use for the
854 <option>--verify</option>
855 operation.</para></listitem>
858 <xi:include href="standard-options.xml" xpointer="help" />
859 <xi:include href="standard-options.xml" xpointer="version" />
860 <xi:include href="standard-options.xml" xpointer="no-pager" />
865 <title>Exit status</title>
867 <para>On success, 0 is returned; otherwise, a non-zero
868 failure code is returned.</para>
871 <xi:include href="less-variables.xml" />
874 <title>Examples</title>
876 <para>Without arguments, all collected logs are shown
879 <programlisting>journalctl</programlisting>
881 <para>With one match specified, all entries with a field matching the expression are shown:</para>
883 <programlisting>journalctl _SYSTEMD_UNIT=avahi-daemon.service</programlisting>
885 <para>If two different fields are matched, only entries matching both expressions at the same time are shown:</para>
887 <programlisting>journalctl _SYSTEMD_UNIT=avahi-daemon.service _PID=28097</programlisting>
889 <para>If two matches refer to the same field, all entries matching either expression are shown:</para>
891 <programlisting>journalctl _SYSTEMD_UNIT=avahi-daemon.service _SYSTEMD_UNIT=dbus.service</programlisting>
893 <para>If the separator <literal>+</literal> is used,
894 two expressions may be combined in a logical OR. The
895 following will show all messages from the Avahi
896 service process with the PID 28097 plus all messages
897 from the D-Bus service (from any of its
900 <programlisting>journalctl _SYSTEMD_UNIT=avahi-daemon.service _PID=28097 + _SYSTEMD_UNIT=dbus.service</programlisting>
902 <para>Show all logs generated by the D-Bus executable:</para>
904 <programlisting>journalctl /usr/bin/dbus-daemon</programlisting>
906 <para>Show all logs of the kernel device node <filename noindex='true'>/dev/sda</filename>:</para>
908 <programlisting>journalctl /dev/sda</programlisting>
910 <para>Show all kernel logs from previous boot:</para>
912 <programlisting>journalctl -k -b -1</programlisting>
917 <title>See Also</title>
919 <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
920 <citerefentry><refentrytitle>systemd-journald.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
921 <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
922 <citerefentry><refentrytitle>coredumpctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
923 <citerefentry><refentrytitle>systemd.journal-fields</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
924 <citerefentry><refentrytitle>journald.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>