summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2011-07-23 04:15:38 +0200
committerLennart Poettering <lennart@poettering.net>2011-07-23 04:15:38 +0200
commit253ee27a0c7a410d27d490bb79ea97caed6a2b68 (patch)
tree18ad300c549ecb3c58925e3e5c56974741e6726a
parentc0576cd6d61b81d3bab307e2deee10447de115db (diff)
manager: add log control via RT signals
-rw-r--r--TODO32
-rw-r--r--man/systemd.xml38
-rw-r--r--src/manager.c31
3 files changed, 76 insertions, 25 deletions
diff --git a/TODO b/TODO
index 62bea4109d..82bc9950a6 100644
--- a/TODO
+++ b/TODO
@@ -36,7 +36,7 @@ Features:
* logind: non-local X11 server handling
-* logind: use sysfs path in device hash table instead of syname, as soon as fb driver is fixed
+* logind: use sysfs path in device hash table instead of sysname, as soon as fb driver is fixed
* possibly apply systemd-sysctl per network device subtrees on hotplug
@@ -59,7 +59,9 @@ Features:
* readahead: check whether a btrfs volume includes ssd by checking mount flag "ssd"
-* support sd_notify() style notificatio when reload is finished (RELOADED=1)
+* support sd_notify() style notification when reload is finished (RELOADED=1)
+
+* support sf_notify() style notification when shutting down, to make auto-exit bus services work
* verify that the AF_UNIX sockets of a service in the fs still exist
when we start a service in order to avoid confusion when a user
@@ -68,8 +70,6 @@ Features:
* Make it possible to set the keymap independently from the font on
the kernel cmdline. Right now setting one resets also the other.
-* add dbus call to convert snapshot into target
-
* move nss-myhostname into systemd
* figure out a standard place to configure timezone name, inform myllynen@redhat.com
@@ -84,14 +84,8 @@ Features:
* allow list of paths in config_parse_condition_path()
-* introduce dbus calls for enabling/disabling a service
-
-* support notifications for services being enabled/disabled
-
* show enablement status in systemctl status
-* consider services with any kind of link in /etc/systemd/system enabled
-
* teach systemctl to enable unit files in arbitrary directories
* In systemctl make sure both is-enabled and is-active print a string, or neither.
@@ -101,6 +95,8 @@ Features:
systemctl unmask <unit>
Also support --temp to make this temporary by placing mask links in /run.
+* perhaps add "systemctl reenable" as combination of "systemctl disable" and "systemctl enable"
+
* add support for /bin/mount -s
* GC unreferenced jobs (such as .device jobs)
@@ -120,8 +116,8 @@ Features:
* write blog stories about:
- enabling dbus services
- status update
- - /etc/sysconfig and /etc/default
- how to make changes to sysctl and sysfs attributes
+ - remote access
* allow port=0 in .socket units
@@ -189,12 +185,8 @@ Features:
* make sure timeouts are applied to Type=oneshot services.
-* detect LXC environment
-
* investigate whether the gnome pty helper should be moved into systemd, to provide cgroup support.
-* perhaps add "systemctl reenable" as combination of "systemctl disable" and "systemctl enable"
-
* need a way to apply mount options of api vfs from systemd unit files
(or some other modern source?) instead of fstab?
@@ -218,16 +210,6 @@ Features:
* systemd --user
- get PR_SET_ANCHOR merged: http://lkml.org/lkml/2010/2/2/165
-* add VT tracking:
- - provide CK functionality
- - start getty only when actual vt switch happens (same model as
- socket on-demand activation). allocate the next free tty and
- start a getty there. this way, pressing alt-f[1-12] will switch
- through running X and getty sessions, and any unallocated
- activated tty will start a new getty. the hardcoding of
- getty[1-6] will entirely go away.
- - http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=fbc92a3455577ab17615cbcb91826399061bd789
-
* implicitly import "defaults" settings file into all types
* port over to LISTEN_FDS/LISTEN_PID:
diff --git a/man/systemd.xml b/man/systemd.xml
index 142c1d6a05..5129fbb050 100644
--- a/man/systemd.xml
+++ b/man/systemd.xml
@@ -800,6 +800,44 @@
on the kernel command
line.</para></listitem>
</varlistentry>
+
+ <varlistentry>
+ <term>SIGRTMIN+22</term>
+ <term>SIGRTMIN+23</term>
+
+ <listitem><para>Sets the log level to
+ <literal>debug</literal>
+ (resp. <literal>info</literal> on
+ <literal>SIGRTMIN+32</literal>), as
+ controlled via
+ <varname>systemd.log_level=debug</varname>
+ (resp. <varname>systemd.log_level=info</varname>
+ on <literal>SIGRTMIN+23</literal>) on
+ the kernel command
+ line.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>SIGRTMIN+27</term>
+ <term>SIGRTMIN+28</term>
+ <term>SIGRTMIN+29</term>
+
+ <listitem><para>Sets the log level to
+ <literal>console</literal>
+ (resp. <literal>kmsg</literal> on
+ <literal>SIGRTMIN+28</literal>;
+ resp.<literal>syslog-or-kmsg</literal>
+ on <literal>SIGRTMIN+29</literal>), as
+ controlled via
+ <varname>systemd.log_target=console</varname>
+ (resp. <varname>systemd.log_target=kmsg</varname>
+ on <literal>SIGRTMIN+28</literal>;
+ resp
+ <varname>systemd.log_target=syslog-or-kmsg</varname>
+ on <literal>SIGRTMIN+29</literal>) on
+ the kernel command
+ line.</para></listitem>
+ </varlistentry>
</variablelist>
</refsect1>
diff --git a/src/manager.c b/src/manager.c
index c1242ae8b3..cdd618e148 100644
--- a/src/manager.c
+++ b/src/manager.c
@@ -186,6 +186,11 @@ static int manager_setup_signals(Manager *m) {
SIGRTMIN+16, /* systemd: Immediate kexec */
SIGRTMIN+20, /* systemd: enable status messages */
SIGRTMIN+21, /* systemd: disable status messages */
+ SIGRTMIN+22, /* systemd: set log level to LOG_DEBUG */
+ SIGRTMIN+23, /* systemd: set log level to LOG_INFO */
+ SIGRTMIN+27, /* systemd: set log target to console */
+ SIGRTMIN+28, /* systemd: set log target to kmsg */
+ SIGRTMIN+29, /* systemd: set log target to syslog-or-kmsg */
-1);
assert_se(sigprocmask(SIG_SETMASK, &mask, NULL) == 0);
@@ -2200,6 +2205,7 @@ static int manager_process_signal_fd(Manager *m) {
break;
default: {
+
/* Starting SIGRTMIN+0 */
static const char * const target_table[] = {
[0] = SPECIAL_DEFAULT_TARGET,
@@ -2244,6 +2250,31 @@ static int manager_process_signal_fd(Manager *m) {
m->show_status = false;
break;
+ case 22:
+ log_set_max_level(LOG_DEBUG);
+ log_notice("Setting log level to debug.");
+ break;
+
+ case 23:
+ log_set_max_level(LOG_INFO);
+ log_notice("Setting log level to info.");
+ break;
+
+ case 27:
+ log_set_target(LOG_TARGET_CONSOLE);
+ log_notice("Setting log target to console.");
+ break;
+
+ case 28:
+ log_set_target(LOG_TARGET_KMSG);
+ log_notice("Setting log target to kmsg.");
+ break;
+
+ case 29:
+ log_set_target(LOG_TARGET_SYSLOG_OR_KMSG);
+ log_notice("Setting log target to syslog-or-kmsg.");
+ break;
+
default:
log_warning("Got unhandled signal <%s>.", strna(signal_to_string(sfsi.ssi_signo)));
}