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:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user