<?xml version='1.0'?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
  "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->

<refentry id="coredump.conf" conditional="ENABLE_COREDUMP"
          xmlns:xi="http://www.w3.org/2001/XInclude">
  <refentryinfo>
    <title>coredump.conf</title>
    <productname>systemd</productname>
  </refentryinfo>

  <refmeta>
    <refentrytitle>coredump.conf</refentrytitle>
    <manvolnum>5</manvolnum>
  </refmeta>

  <refnamediv>
    <refname>coredump.conf</refname>
    <refname>coredump.conf.d</refname>
    <refpurpose>Core dump storage configuration files</refpurpose>
  </refnamediv>

  <refsynopsisdiv>
    <para><filename>/etc/systemd/coredump.conf</filename></para>
    <para><filename>/etc/systemd/coredump.conf.d/*.conf</filename></para>
    <para><filename>/run/systemd/coredump.conf.d/*.conf</filename></para>
    <para><filename>/usr/lib/systemd/coredump.conf.d/*.conf</filename></para>
  </refsynopsisdiv>

  <refsect1>
    <title>Description</title>

    <para>These files configure the behavior of
    <citerefentry><refentrytitle>systemd-coredump</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
    a handler for core dumps invoked by the kernel. Whether <command>systemd-coredump</command> is used
    is determined by the kernel's
    <varname>kernel.core_pattern</varname> <citerefentry project='man-pages'><refentrytitle>sysctl</refentrytitle><manvolnum>8</manvolnum></citerefentry>
    setting. See
    <citerefentry><refentrytitle>systemd-coredump</refentrytitle><manvolnum>8</manvolnum></citerefentry>
    and
    <citerefentry project='man-pages'><refentrytitle>core</refentrytitle><manvolnum>5</manvolnum></citerefentry>
    pages for the details.</para>
  </refsect1>

  <xi:include href="standard-conf.xml" xpointer="main-conf" />

  <refsect1>
    <title>Options</title>

    <para>All options are configured in the
    [Coredump] section:</para>

    <variablelist class='config-directives'>

      <varlistentry>
        <term><varname>Storage=</varname></term>

        <listitem><para>Controls where to store cores. One of <literal>none</literal>,
        <literal>external</literal>, and <literal>journal</literal>. When
        <literal>none</literal>, the core dumps may be logged (including the backtrace if
        possible), but not stored permanently. When <literal>external</literal> (the
        default), cores will be stored in <filename>/var/lib/systemd/coredump/</filename>.
        When <literal>journal</literal>, cores will be stored in the journal and rotated
        following normal journal rotation patterns.</para>

        <para>When cores are stored in the journal, they might be
        compressed following journal compression settings, see
        <citerefentry><refentrytitle>journald.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
        When cores are stored externally, they will be compressed
        by default, see below.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>Compress=</varname></term>

        <listitem><para>Controls compression for external
        storage. Takes a boolean argument, which defaults to
        <literal>yes</literal>.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>ProcessSizeMax=</varname></term>

        <listitem><para>The maximum size in bytes of a core which will be processed. Core dumps exceeding
        this size may be stored, but the backtrace will not be generated.  Like other sizes in this same
        config file, the usual suffixes to the base of 1024 are allowed (B, K, M, G, T, P, and E). Defaults
        to 1G on 32bit systems, 32G on 64bit systems.</para>

        <para>Setting <varname>Storage=none</varname> and <varname>ProcessSizeMax=0</varname>
        disables all coredump handling except for a log entry.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>ExternalSizeMax=</varname></term>
        <term><varname>JournalSizeMax=</varname></term>

        <listitem><para>The maximum (compressed or uncompressed) size in bytes of a core to be saved in
        separate files on disk (default: 1G on 32bit, 32G on 64bit systems) or in the journal (default:
        10M). Unit suffixes are allowed just as in <option>ProcessSizeMax=</option>.</para></listitem>

        <para><varname>ExternalSizeMax=infinity</varname> sets the core size to unlimited.</para>
      </varlistentry>

      <varlistentry>
        <term><varname>MaxUse=</varname></term>
        <term><varname>KeepFree=</varname></term>

        <listitem><para>Enforce limits on the disk space, specified
        in bytes, taken up by externally stored core dumps.
        Unit suffixes are allowed just as in <option>ProcessSizeMax=</option>.
        <option>MaxUse=</option> makes
        sure that old core dumps are removed as soon as the total disk
        space taken up by core dumps grows beyond this limit (defaults
        to 10% of the total disk size). <option>KeepFree=</option>
        controls how much disk space to keep free at least (defaults
        to 15% of the total disk size). Note that the disk space used
        by core dumps might temporarily exceed these limits while
        core dumps are processed. Note that old core dumps are also
        removed based on time via
        <citerefentry><refentrytitle>systemd-tmpfiles</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
        Set either value to 0 to turn off size-based cleanup.</para></listitem>
      </varlistentry>
    </variablelist>

    <para>The defaults for all values are listed as comments in the
    template <filename>/etc/systemd/coredump.conf</filename> file that
    is installed by default.</para>
  </refsect1>

  <refsect1>
    <title>See Also</title>
    <para>
      <citerefentry><refentrytitle>systemd-journald.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>coredumpctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>systemd-tmpfiles</refentrytitle><manvolnum>8</manvolnum></citerefentry>
    </para>
  </refsect1>

</refentry>
