diff options
author | Lennart Poettering <lennart@poettering.net> | 2010-08-25 03:13:44 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2010-08-25 03:13:44 +0200 |
commit | 584be568b99633eb48c21ece92e241de011ecc9a (patch) | |
tree | 47a70355c2f267cdba2a99d7f0dce234aba1f142 /src/systemctl.c | |
parent | f1e36d677ac771408e40c34ead368a7fdbcc0622 (diff) |
systemctl: show timestamps for state changes
Diffstat (limited to 'src/systemctl.c')
-rw-r--r-- | src/systemctl.c | 37 |
1 files changed, 35 insertions, 2 deletions
diff --git a/src/systemctl.c b/src/systemctl.c index f9317ad18f..0c33abb307 100644 --- a/src/systemctl.c +++ b/src/systemctl.c @@ -1489,6 +1489,11 @@ typedef struct UnitStatusInfo { const char *path; const char *default_control_group; + usec_t inactive_exit_timestamp; + usec_t active_enter_timestamp; + usec_t active_exit_timestamp; + usec_t inactive_enter_timestamp; + bool need_daemon_reload; /* Service */ @@ -1523,6 +1528,9 @@ typedef struct UnitStatusInfo { static void print_status_info(UnitStatusInfo *i) { ExecStatusInfo *p; const char *on, *off, *ss; + usec_t timestamp; + char since1[FORMAT_TIMESTAMP_PRETTY_MAX], *s1; + char since2[FORMAT_TIMESTAMP_MAX], *s2; assert(i); @@ -1559,17 +1567,34 @@ static void print_status_info(UnitStatusInfo *i) { on = off = ""; if (ss) - printf("\t Active: %s%s (%s)%s\n", + printf("\t Active: %s%s (%s)%s", on, strna(i->active_state), ss, off); else - printf("\t Active: %s%s%s\n", + printf("\t Active: %s%s%s", on, strna(i->active_state), off); + timestamp = (streq_ptr(i->active_state, "active") || + streq_ptr(i->active_state, "reloading")) ? i->active_enter_timestamp : + (streq_ptr(i->active_state, "inactive") || + streq_ptr(i->active_state, "maintenance")) ? i->inactive_enter_timestamp : + streq_ptr(i->active_state, "activating") ? i->inactive_exit_timestamp : + i->active_exit_timestamp; + + s1 = format_timestamp_pretty(since1, sizeof(since1), timestamp); + s2 = format_timestamp(since2, sizeof(since2), timestamp); + + if (s1) + printf(" since [%s; %s]\n", s2, s1); + else if (s2) + printf(" since [%s]\n", s2); + else + printf("\n"); + if (i->sysfs_path) printf("\t Device: %s\n", i->sysfs_path); else if (i->where) @@ -1782,6 +1807,14 @@ static int status_property(const char *name, DBusMessageIter *iter, UnitStatusIn i->start_timestamp = (usec_t) u; else if (streq(name, "ExecMainExitTimestamp")) i->exit_timestamp = (usec_t) u; + else if (streq(name, "ActiveEnterTimestamp")) + i->active_enter_timestamp = (usec_t) u; + else if (streq(name, "InactiveEnterTimestamp")) + i->inactive_enter_timestamp = (usec_t) u; + else if (streq(name, "InactiveExitTimestamp")) + i->inactive_exit_timestamp = (usec_t) u; + else if (streq(name, "ActiveExitTimestamp")) + i->active_exit_timestamp = (usec_t) u; break; } |