<?xml version='1.0'?> <!--*-nxml-*-->
<!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="systemd-delta"
    xmlns:xi="http://www.w3.org/2001/XInclude">

  <refentryinfo>
    <title>systemd-delta</title>
    <productname>systemd</productname>
  </refentryinfo>

  <refmeta>
    <refentrytitle>systemd-delta</refentrytitle>
    <manvolnum>1</manvolnum>
  </refmeta>

  <refnamediv>
    <refname>systemd-delta</refname>
    <refpurpose>Find overridden configuration files</refpurpose>
  </refnamediv>

  <refsynopsisdiv>
    <cmdsynopsis>
      <command>systemd-delta</command>
      <arg choice="opt" rep="repeat">OPTIONS</arg>
      <arg choice="opt" rep="repeat"><replaceable>PREFIX</replaceable><optional>/<replaceable>SUFFIX</replaceable></optional>|<replaceable>SUFFIX</replaceable></arg>
    </cmdsynopsis>
  </refsynopsisdiv>

  <refsect1>
    <title>Description</title>

    <para><command>systemd-delta</command> may be used to identify and
    compare configuration files that override other configuration
    files. Files in <filename>/etc/</filename> have highest priority,
    files in <filename>/run/</filename> have the second highest
    priority, …, files in <filename>/usr/lib/</filename> have lowest
    priority. Files in a directory with higher priority override files
    with the same name in directories of lower priority. In addition,
    certain configuration files can have <literal>.d</literal>
    directories which contain "drop-in" files with configuration
    snippets which augment the main configuration file. "Drop-in"
    files can be overridden in the same way by placing files with the
    same name in a directory of higher priority (except that, in case
    of "drop-in" files, both the "drop-in" file name and the name of
    the containing directory, which corresponds to the name of the
    main configuration file, must match). For a fuller explanation,
    see
    <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
    </para>

    <para>The command line argument will be split into a prefix and a
    suffix. Either is optional. The prefix must be one of the
    directories containing configuration files
    (<filename>/etc/</filename>, <filename>/run/</filename>,
    <filename>/usr/lib/</filename>, …). If it is given, only
    overriding files contained in this directory will be shown.
    Otherwise, all overriding files will be shown. The suffix must be
    a name of a subdirectory containing configuration files like
    <filename>tmpfiles.d</filename>, <filename>sysctl.d</filename> or
    <filename>systemd/system</filename>. If it is given, only
    configuration files in this subdirectory (across all configuration
    paths) will be analyzed. Otherwise, all configuration files will
    be analyzed. If the command line argument is not given at all, all
    configuration files will be analyzed. See below for some
    examples.</para>
  </refsect1>

  <refsect1>
    <title>Options</title>

    <para>The following options are understood:</para>

    <variablelist>
      <varlistentry>
        <term><option>-t</option></term>
        <term><option>--type=</option></term>

        <listitem><para>When listing the differences, only list those
        that are asked for. The list itself is a comma-separated list
        of desired difference types.</para>

        <para>Recognized types are:

          <variablelist>
            <varlistentry>
              <term><varname>masked</varname></term>

              <listitem><para>Show masked files</para></listitem>
            </varlistentry>

            <varlistentry>
              <term><varname>equivalent</varname></term>

              <listitem><para>Show overridden files that while
              overridden, do not differ in content.</para></listitem>
            </varlistentry>

            <varlistentry>
              <term><varname>redirected</varname></term>

              <listitem><para>Show files that are redirected to
              another.</para></listitem>
            </varlistentry>

            <varlistentry>
              <term><varname>overridden</varname></term>

              <listitem><para>Show overridden, and changed
              files.</para></listitem>
            </varlistentry>

            <varlistentry>
              <term><varname>extended</varname></term>

              <listitem><para>Show <filename>*.conf</filename> files
              in drop-in directories for units.</para></listitem>
            </varlistentry>

            <varlistentry>
              <term><varname>unchanged</varname></term>

              <listitem><para>Show unmodified files
              too.</para></listitem>
            </varlistentry>
          </variablelist>
        </para></listitem>
      </varlistentry>

      <varlistentry>
        <term><option>--diff=</option></term>

        <listitem><para>When showing modified files, when a file is
        overridden show a diff as well. This option takes a boolean
        argument. If omitted, it defaults to
        <option>true</option>.</para></listitem>
      </varlistentry>

      <xi:include href="standard-options.xml" xpointer="help" />
      <xi:include href="standard-options.xml" xpointer="version" />
      <xi:include href="standard-options.xml" xpointer="no-pager" />
    </variablelist>
  </refsect1>

  <refsect1>
    <title>Examples</title>

    <para>To see all local configuration:</para>
    <programlisting>systemd-delta</programlisting>

    <para>To see all runtime configuration:</para>
    <programlisting>systemd-delta /run</programlisting>

    <para>To see all system unit configuration changes:</para>
    <programlisting>systemd-delta systemd/system</programlisting>

    <para>To see all runtime "drop-in" changes for system units:</para>
    <programlisting>systemd-delta --type=extended /run/systemd/system</programlisting>
  </refsect1>

  <refsect1>
    <title>Exit status</title>

    <para>On success, 0 is returned, a non-zero failure code
    otherwise.</para>
  </refsect1>

  <refsect1>
    <title>See Also</title>
    <para>
      <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>
    </para>
  </refsect1>

</refentry>
