mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-01-13 13:17:43 +03:00
systemctl,loginctl,machinectl: add --signal=list
This lists numerical signal values: $ systemctl --signal list SIGNAL NAME 1 SIGHUP 2 SIGINT 3 SIGQUIT ... 62 SIGRTMIN+28 63 SIGRTMIN+29 64 SIGRTMIN+30 This is useful when trying to kill e.g. systemd with a specific signal number using kill. kill doesn't accept our fancy signal names like RTMIN+4, so one would have to calculate that value somehow. Doing systemctl --signal list | grep -F RTMIN+4 is a nice way of doing that.
This commit is contained in:
parent
86beb21302
commit
97ab9dfc0d
@ -334,13 +334,14 @@
|
||||
<term><option>-s</option></term>
|
||||
<term><option>--signal=</option></term>
|
||||
|
||||
<listitem><para>When used with <command>kill-session</command>
|
||||
or <command>kill-user</command>, choose which signal to send
|
||||
to selected processes. Must be one of the well known signal
|
||||
specifiers, such as <constant>SIGTERM</constant>,
|
||||
<constant>SIGINT</constant> or <constant>SIGSTOP</constant>.
|
||||
If omitted, defaults to
|
||||
<constant>SIGTERM</constant>.</para></listitem>
|
||||
<listitem><para>When used with <command>kill-session</command> or <command>kill-user</command>,
|
||||
choose which signal to send to selected processes. Must be one of the well known signal specifiers,
|
||||
such as <constant>SIGTERM</constant>, <constant>SIGINT</constant> or <constant>SIGSTOP</constant>.
|
||||
If omitted, defaults to <constant>SIGTERM</constant>.</para>
|
||||
|
||||
<para>The special value <literal>help</literal> will list the known values and the program will exit
|
||||
immediately, and the special value <literal>list</literal> will list known values along with the
|
||||
numerical signal numbers and the program will exit immediately.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
|
@ -73,7 +73,8 @@
|
||||
<option>SIGTERM</option>.</para>
|
||||
|
||||
<para>The special value <literal>help</literal> will list the known values and the program will exit
|
||||
immediately.</para>
|
||||
immediately, and the special value <literal>list</literal> will list known values along with the
|
||||
numerical signal numbers and the program will exit immediately.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
|
@ -1,7 +1,9 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
|
||||
#include "format-table.h"
|
||||
#include "parse-argument.h"
|
||||
#include "signal-util.h"
|
||||
#include "stdio-util.h"
|
||||
#include "string-table.h"
|
||||
#include "string-util.h"
|
||||
|
||||
@ -16,6 +18,29 @@ int parse_signal_argument(const char *s, int *ret) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (streq(s, "list")) {
|
||||
_cleanup_(table_unrefp) Table *table = NULL;
|
||||
|
||||
table = table_new("signal", "name");
|
||||
if (!table)
|
||||
return log_oom();
|
||||
|
||||
for (int i = 1; i < _NSIG; i++) {
|
||||
r = table_add_many(
|
||||
table,
|
||||
TABLE_INT, i,
|
||||
TABLE_SIGNAL, i);
|
||||
if (r < 0)
|
||||
return table_log_add_error(r);
|
||||
}
|
||||
|
||||
r = table_print(table, NULL);
|
||||
if (r < 0)
|
||||
return table_log_print_error(r);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
r = signal_from_string(s);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to parse signal string \"%s\".", s);
|
||||
|
Loading…
Reference in New Issue
Block a user