mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-01-11 05:17:44 +03:00
Merge pull request #2944 from keszybz/man-coredump-sysctl
Man coredump sysctl
This commit is contained in:
commit
d4337c15d5
@ -1850,11 +1850,21 @@ MANPAGES += \
|
||||
man/coredumpctl.1 \
|
||||
man/systemd-coredump.8
|
||||
MANPAGES_ALIAS += \
|
||||
man/coredump.conf.d.5
|
||||
man/coredump.conf.d.5 \
|
||||
man/systemd-coredump.socket.8 \
|
||||
man/systemd-coredump@.service.8
|
||||
man/coredump.conf.d.5: man/coredump.conf.5
|
||||
man/systemd-coredump.socket.8: man/systemd-coredump.8
|
||||
man/systemd-coredump@.service.8: man/systemd-coredump.8
|
||||
man/coredump.conf.d.html: man/coredump.conf.html
|
||||
$(html-alias)
|
||||
|
||||
man/systemd-coredump.socket.html: man/systemd-coredump.html
|
||||
$(html-alias)
|
||||
|
||||
man/systemd-coredump@.service.html: man/systemd-coredump.html
|
||||
$(html-alias)
|
||||
|
||||
endif
|
||||
|
||||
if ENABLE_EFI
|
||||
|
@ -60,7 +60,14 @@
|
||||
|
||||
<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.</para>
|
||||
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" />
|
||||
|
@ -45,11 +45,15 @@
|
||||
|
||||
<refnamediv>
|
||||
<refname>systemd-coredump</refname>
|
||||
<refname>systemd-coredump.socket</refname>
|
||||
<refname>systemd-coredump@.service</refname>
|
||||
<refpurpose>Log and store core dumps</refpurpose>
|
||||
</refnamediv>
|
||||
|
||||
<refsynopsisdiv>
|
||||
<para><filename>/usr/lib/systemd/systemd-coredump</filename></para>
|
||||
<para><filename>systemd-coredump@.service</filename></para>
|
||||
<para><filename>systemd-coredump.socket</filename></para>
|
||||
</refsynopsisdiv>
|
||||
|
||||
<refsect1>
|
||||
@ -60,12 +64,13 @@
|
||||
signal and dumps core. For it to be used in this capacity, it must
|
||||
be specified by the
|
||||
<varname>kernel.core_pattern</varname> <citerefentry project='man-pages'><refentrytitle>sysctl</refentrytitle><manvolnum>8</manvolnum></citerefentry>
|
||||
setting. Systemd installs
|
||||
<filename>/usr/lib/sysctl.d/50-coredump.conf</filename> which
|
||||
configures <varname>kernel.core_pattern</varname> to invoke
|
||||
<command>systemd-coredump</command>. This file may be masked or
|
||||
overridden to use a different setting following normal
|
||||
<citerefentry><refentrytitle>sysctl.d</refentrytitle><manvolnum>5</manvolnum></citerefentry> rules.</para>
|
||||
setting. The syntax of this setting is explained in
|
||||
<citerefentry project='man-pages'><refentrytitle>core</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
|
||||
Systemd installs <filename>/usr/lib/sysctl.d/50-coredump.conf</filename> which configures
|
||||
<varname>kernel.core_pattern</varname> to invoke <command>systemd-coredump</command>.
|
||||
This file may be masked or overridden to use a different setting following normal
|
||||
<citerefentry><refentrytitle>sysctl.d</refentrytitle><manvolnum>5</manvolnum></citerefentry>
|
||||
rules.</para>
|
||||
|
||||
<para>The behavior of a specific program upon reception of a
|
||||
signal is governed by a few factors which are described in detail
|
||||
@ -77,18 +82,35 @@
|
||||
<citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>).
|
||||
</para>
|
||||
|
||||
<para><command>systemd-coredump</command> will log the coredump
|
||||
including a backtrace if possible, and store the core (contents of
|
||||
process' memory contents) in an external file on disk in
|
||||
<filename>/var/lib/systemd/coredump</filename>, or directly in
|
||||
the journal. This behavior may be modified using
|
||||
<citerefentry><refentrytitle>coredump.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para>
|
||||
<para>The behaviour of <command>systemd-coredump</command> is configured through
|
||||
<filename>/etc/systemd/coredump.conf</filename> and other configuration files. See
|
||||
<citerefentry><refentrytitle>coredump.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>
|
||||
for details. By default, <command>systemd-coredump</command> will log the coredump including a
|
||||
backtrace if possible, and store the core (contents of process' memory contents) in an external
|
||||
file on disk in <filename>/var/lib/systemd/coredump</filename>.</para>
|
||||
|
||||
<para>Apart from the
|
||||
<citerefentry><refentrytitle>journalctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
||||
log viewer,
|
||||
<para>When the kernel invokes <command>systemd-coredump</command> to handle a coredump,
|
||||
it will connect to the socket created by the <filename>systemd-coredump.socket</filename>
|
||||
unit, which in turn will spawn a <filename>systemd-coredump@.service</filename> instance
|
||||
to process the coredump. Hence <filename>systemd-coredump.socket</filename>
|
||||
and <filename>systemd-coredump@.service</filename> are helper units which do the actual
|
||||
processing of coredumps and are subject to normal service management.</para>
|
||||
|
||||
<para>The log entry and a backtrace are stored in the journal, and can be viewed with
|
||||
<citerefentry><refentrytitle>journalctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>.
|
||||
<citerefentry><refentrytitle>coredumpctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
||||
may be used to list and extract coredumps.</para>
|
||||
may be used to list and extract coredumps or load them in
|
||||
<citerefentry project='man-pages'><refentrytitle>gdb</refentrytitle><manvolnum>1</manvolnum></citerefentry>.
|
||||
</para>
|
||||
|
||||
<para>The coredump helper is invoked anew each time. Therefore, any configuration
|
||||
changes will take effect on the invocation of <command>systemd-coredump</command>.
|
||||
If the sysctl configuration is modified, it must be updated in the kernel before
|
||||
it takes effect, see
|
||||
<citerefentry><refentrytitle>systemd-sysctl</refentrytitle><manvolnum>8</manvolnum></citerefentry>
|
||||
and
|
||||
<citerefentry project='man-pages'><refentrytitle>sysctl</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
|
@ -62,24 +62,29 @@
|
||||
<para><filename>systemd-sysctl.service</filename> is an early boot
|
||||
service that configures
|
||||
<citerefentry project='man-pages'><refentrytitle>sysctl</refentrytitle><manvolnum>8</manvolnum></citerefentry>
|
||||
kernel parameters.</para>
|
||||
kernel parameters by invoking <command>/usr/lib/systemd/systemd-sysctl</command>.</para>
|
||||
|
||||
<para>If invoked with no arguments, it applies all directives from
|
||||
all configuration files in
|
||||
<citerefentry><refentrytitle>sysctl.d</refentrytitle><manvolnum>5</manvolnum></citerefentry>
|
||||
are searched for a matching file. If one or more filenames are passed on
|
||||
the command line, only the directives in these files are applied.
|
||||
</para>
|
||||
<para>When invoked with no arguments, <command>/usr/lib/systemd/systemd-sysctl</command> applies
|
||||
all directives from configuration files listed in
|
||||
<citerefentry><refentrytitle>sysctl.d</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
|
||||
If one or more filenames are passed on the command line, only the directives in these files are
|
||||
applied.</para>
|
||||
|
||||
<para>In addition, <option>--prefix=</option> option may be used to limit which sysctl
|
||||
settings are applied.</para>
|
||||
|
||||
<para>See
|
||||
<citerefentry project='man-pages'><refentrytitle>sysctl.d</refentrytitle><manvolnum>5</manvolnum></citerefentry>
|
||||
for information about the configuration of this service.</para>
|
||||
for information about the configuration of sysctl settings. After sysctl configuration is
|
||||
changed on disk, it must be written to the files in <filename>/proc/sys</filename> before it
|
||||
takes effect. It is possible to update specific settings, or simply to reload all configuration,
|
||||
see Examples below.</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1><title>Options</title>
|
||||
<variablelist>
|
||||
<varlistentry id='path'>
|
||||
<term><option>--path=</option></term>
|
||||
<varlistentry id='prefix'>
|
||||
<term><option>--prefix=</option></term>
|
||||
<listitem>
|
||||
<para>Only apply rules with the specified prefix.</para>
|
||||
</listitem>
|
||||
@ -91,6 +96,50 @@
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Examples</title>
|
||||
|
||||
<example>
|
||||
<title>Reset all sysctl settings</title>
|
||||
|
||||
<programlisting>systemctl restart systemd-sysctl</programlisting>
|
||||
</example>
|
||||
|
||||
<example>
|
||||
<title>View coredump handler configuration</title>
|
||||
|
||||
<programlisting># sysctl kernel.core_pattern
|
||||
kernel.core_pattern = |/usr/libexec/abrt-hook-ccpp %s %c %p %u %g %t %P %I
|
||||
</programlisting>
|
||||
</example>
|
||||
|
||||
<example>
|
||||
<title>Update coredump handler configuration</title>
|
||||
|
||||
<programlisting># /usr/lib/systemd/systemd-sysctl --prefix kernel.core_pattern</programlisting>
|
||||
|
||||
<para>This searches all the directories listed in
|
||||
<citerefentry><refentrytitle>sysctl.d</refentrytitle><manvolnum>5</manvolnum></citerefentry>
|
||||
for configuration files and writes <filename>/proc/sys/kernel/core_pattern</filename>.</para>
|
||||
</example>
|
||||
|
||||
<example>
|
||||
<title>Update coredump handler configuration according to a specific file</title>
|
||||
|
||||
<programlisting># /usr/lib/systemd/systemd-sysctl 50-coredump.conf</programlisting>
|
||||
|
||||
<para>This applies all the settings found in <filename>50-coredump.conf</filename>.
|
||||
Either <filename>/etc/sysctl.d/50-coredump.conf</filename>, or
|
||||
<filename>/run/sysctl.d/50-coredump.conf</filename>, or
|
||||
<filename>/usr/lib/sysctl.d/50-coredump.conf</filename> will be used, in the order
|
||||
of preference.</para>
|
||||
</example>
|
||||
|
||||
<para>See
|
||||
<citerefentry project='man-pages'><refentrytitle>sysctl</refentrytitle><manvolnum>8</manvolnum></citerefentry>
|
||||
for various ways to directly apply sysctl settings.</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>See Also</title>
|
||||
<para>
|
||||
|
@ -224,7 +224,7 @@
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>KillSignal=</option></term>
|
||||
<term><varname>KillSignal=</varname></term>
|
||||
|
||||
<listitem><para>Specify the process signal to send to the
|
||||
container's PID 1 when nspawn itself receives SIGTERM, in
|
||||
|
@ -71,7 +71,7 @@ static ssize_t try_copy_file_range(int fd_in, loff_t *off_in,
|
||||
int copy_bytes(int fdf, int fdt, uint64_t max_bytes, bool try_reflink) {
|
||||
bool try_cfr = true, try_sendfile = true, try_splice = true;
|
||||
int r;
|
||||
size_t m = SSIZE_MAX; /* that the maximum that sendfile and c_f_r accept */
|
||||
size_t m = SSIZE_MAX; /* that is the maximum that sendfile and c_f_r accept */
|
||||
|
||||
assert(fdf >= 0);
|
||||
assert(fdt >= 0);
|
||||
@ -94,8 +94,8 @@ int copy_bytes(int fdf, int fdt, uint64_t max_bytes, bool try_reflink) {
|
||||
if (max_bytes <= 0)
|
||||
return 1; /* return > 0 if we hit the max_bytes limit */
|
||||
|
||||
if ((uint64_t) m > max_bytes)
|
||||
m = (size_t) max_bytes;
|
||||
if (m > max_bytes)
|
||||
m = max_bytes;
|
||||
}
|
||||
|
||||
/* First try copy_file_range(), unless we already tried */
|
||||
|
@ -90,6 +90,18 @@ static inline int safe_atoli(const char *s, long int *ret_u) {
|
||||
}
|
||||
#endif
|
||||
|
||||
#if SIZE_MAX == UINT_MAX
|
||||
static inline int safe_atozu(const char *s, size_t *ret_u) {
|
||||
assert_cc(sizeof(size_t) == sizeof(unsigned));
|
||||
return safe_atou(s, ret_u);
|
||||
}
|
||||
#else
|
||||
static inline int safe_atozu(const char *s, size_t *ret_u) {
|
||||
assert_cc(sizeof(size_t) == sizeof(long unsigned));
|
||||
return safe_atolu(s, ret_u);
|
||||
}
|
||||
#endif
|
||||
|
||||
int safe_atod(const char *s, double *ret_d);
|
||||
|
||||
int parse_fractional_part_u(const char **s, size_t digits, unsigned *res);
|
||||
|
@ -18,6 +18,8 @@
|
||||
# along with systemd; If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# The contents of this are an example to be copied into systemd.spec.
|
||||
#
|
||||
# Minimum rpm version supported: 4.13.0
|
||||
|
||||
%transfiletriggerin -P 900900 -p <lua> -- @systemunitdir@ /etc/systemd/system
|
||||
-- This script will run after any package is initially installed or
|
||||
|
@ -664,7 +664,7 @@ static int save_core(sd_journal *j, int fd, char **path, bool *unlink_temp) {
|
||||
#endif
|
||||
} else {
|
||||
if (r == -ENOENT)
|
||||
log_error("Cannot retrieve coredump from journal nor disk.");
|
||||
log_error("Cannot retrieve coredump from journal or disk.");
|
||||
else
|
||||
log_error_errno(r, "Failed to retrieve COREDUMP field: %m");
|
||||
goto error;
|
||||
|
@ -112,7 +112,7 @@ int compress_blob_lz4(const void *src, uint64_t src_size,
|
||||
if (src_size < 9)
|
||||
return -ENOBUFS;
|
||||
|
||||
r = LZ4_compress_limitedOutput(src, dst + 8, src_size, (int) dst_alloc_size - 8);
|
||||
r = LZ4_compress_limitedOutput(src, (char*)dst + 8, src_size, (int) dst_alloc_size - 8);
|
||||
if (r <= 0)
|
||||
return -ENOBUFS;
|
||||
|
||||
@ -176,7 +176,7 @@ int decompress_blob_xz(const void *src, uint64_t src_size,
|
||||
return -ENOMEM;
|
||||
|
||||
s.avail_out = space - used;
|
||||
s.next_out = *dst + used;
|
||||
s.next_out = *(uint8_t**)dst + used;
|
||||
}
|
||||
|
||||
*dst_size = space - s.avail_out;
|
||||
@ -215,7 +215,7 @@ int decompress_blob_lz4(const void *src, uint64_t src_size,
|
||||
} else
|
||||
out = *dst;
|
||||
|
||||
r = LZ4_decompress_safe(src + 8, out, src_size - 8, size);
|
||||
r = LZ4_decompress_safe((char*)src + 8, out, src_size - 8, size);
|
||||
if (r < 0 || r != size)
|
||||
return -EBADMSG;
|
||||
|
||||
@ -291,7 +291,7 @@ int decompress_startswith_xz(const void *src, uint64_t src_size,
|
||||
if (!(greedy_realloc(buffer, buffer_size, *buffer_size * 2, 1)))
|
||||
return -ENOMEM;
|
||||
|
||||
s.next_out = *buffer + *buffer_size - s.avail_out;
|
||||
s.next_out = *(uint8_t**)buffer + *buffer_size - s.avail_out;
|
||||
}
|
||||
|
||||
#else
|
||||
@ -324,7 +324,7 @@ int decompress_startswith_lz4(const void *src, uint64_t src_size,
|
||||
if (!(greedy_realloc(buffer, buffer_size, ALIGN_8(prefix_len + 1), 1)))
|
||||
return -ENOMEM;
|
||||
|
||||
r = LZ4_decompress_safe_partial(src + 8, *buffer, src_size - 8,
|
||||
r = LZ4_decompress_safe_partial((char*)src + 8, *buffer, src_size - 8,
|
||||
prefix_len + 1, *buffer_size);
|
||||
if (r >= 0)
|
||||
size = (unsigned) r;
|
||||
|
@ -164,7 +164,7 @@ int main(int argc, char *argv[]) {
|
||||
arg_duration = x * USEC_PER_SEC;
|
||||
}
|
||||
if (argc == 3)
|
||||
(void) safe_atolu(argv[2], &arg_start);
|
||||
(void) safe_atozu(argv[2], &arg_start);
|
||||
else
|
||||
arg_start = getpid();
|
||||
|
||||
|
1
src/network/.gitignore
vendored
1
src/network/.gitignore
vendored
@ -1,2 +1,3 @@
|
||||
/networkd-network-gperf.c
|
||||
/networkd-netdev-gperf.c
|
||||
/networkd-gperf.c
|
||||
|
@ -100,7 +100,6 @@ enum {
|
||||
SD_LLDP_SYSTEM_CAPABILITIES_SVLAN| \
|
||||
SD_LLDP_SYSTEM_CAPABILITIES_TPMR))
|
||||
|
||||
|
||||
#define SD_LLDP_OUI_802_1 (uint8_t[]) { 0x00, 0x80, 0xc2 }
|
||||
#define SD_LLDP_OUI_802_3 (uint8_t[]) { 0x00, 0x12, 0x0f }
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user