mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-03-12 08:58:20 +03:00
Merge pull request #9017 from keszybz/man-coredump
coredump documention enhancement
This commit is contained in:
commit
0e960f9b5c
@ -74,7 +74,7 @@
|
||||
|
||||
<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 will be logged (including the backtrace if
|
||||
<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
|
||||
@ -101,8 +101,12 @@
|
||||
|
||||
<listitem><para>The maximum size in bytes of a core
|
||||
which will be processed. Core dumps exceeding this size
|
||||
will be logged, but the backtrace will not be generated
|
||||
and the core will not be stored.</para></listitem>
|
||||
may be stored, but the backtrace will not be generated.
|
||||
</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>
|
||||
|
@ -128,6 +128,16 @@
|
||||
core dumps and files can be set in files <filename>/etc/systemd/coredump.conf</filename> and snippets mentioned
|
||||
above. In addition the storage time of core dump files is restricted by <command>systemd-tmpfiles</command>,
|
||||
corresponding settings are by default in <filename>/usr/lib/tmpfiles.d/systemd.conf</filename>.</para>
|
||||
|
||||
<refsect2>
|
||||
<title>Disabling coredump processing</title>
|
||||
|
||||
<para>To disable potentially resource-intensive processing by <command>systemd-coredump</command>,
|
||||
set <programlisting>Storage=none
|
||||
ProcessSizeMax=0</programlisting> in
|
||||
<citerefentry><refentrytitle>coredump.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
|
||||
</para>
|
||||
</refsect2>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
|
@ -141,7 +141,12 @@ static int parse_config(void) {
|
||||
}
|
||||
|
||||
static inline uint64_t storage_size_max(void) {
|
||||
return arg_storage == COREDUMP_STORAGE_EXTERNAL ? arg_external_size_max : arg_journal_size_max;
|
||||
if (arg_storage == COREDUMP_STORAGE_EXTERNAL)
|
||||
return arg_external_size_max;
|
||||
if (arg_storage == COREDUMP_STORAGE_JOURNAL)
|
||||
return arg_journal_size_max;
|
||||
assert(arg_storage == COREDUMP_STORAGE_NONE);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int fix_acl(int fd, uid_t uid) {
|
||||
@ -323,7 +328,7 @@ static int save_external_coredump(
|
||||
|
||||
_cleanup_free_ char *fn = NULL, *tmp = NULL;
|
||||
_cleanup_close_ int fd = -1;
|
||||
uint64_t rlimit, max_size;
|
||||
uint64_t rlimit, process_limit, max_size;
|
||||
struct stat st;
|
||||
uid_t uid;
|
||||
int r;
|
||||
@ -350,8 +355,14 @@ static int save_external_coredump(
|
||||
return -EBADSLT;
|
||||
}
|
||||
|
||||
process_limit = MAX(arg_process_size_max, storage_size_max());
|
||||
if (process_limit == 0) {
|
||||
log_debug("Limits for coredump processing and storage are both 0, not dumping core.");
|
||||
return -EBADSLT;
|
||||
}
|
||||
|
||||
/* Never store more than the process configured, or than we actually shall keep or process */
|
||||
max_size = MIN(rlimit, MAX(arg_process_size_max, storage_size_max()));
|
||||
max_size = MIN(rlimit, process_limit);
|
||||
|
||||
r = make_filename(context, &fn);
|
||||
if (r < 0)
|
||||
|
Loading…
x
Reference in New Issue
Block a user