mirror of
https://github.com/systemd/systemd-stable.git
synced 2024-12-23 17:34:00 +03:00
journalctl: specify "--unit=" and "--user-unit" multiple times
Previously only one "--unit=" or "--user-unit" could be specified. With this patch, journalcrtl can show multiple units. $ journalctl -u systemd-udevd.service -u sshd.service -u crond.service -b -- Logs begin at Sa 2013-03-23 11:08:45 CET, end at Fr 2013-04-12 09:10:22 CEST. -- Apr 12 08:41:37 lenovo systemd[1]: Started udev Kernel Device Manager. Apr 12 08:41:37 lenovo systemd[1]: Stopped udev Kernel Device Manager. Apr 12 08:41:38 lenovo systemd[1]: Started udev Kernel Device Manager. Apr 12 08:41:38 lenovo crond[291]: (CRON) INFO (Syslog will be used instead of sendmail.) Apr 12 08:41:38 lenovo crond[291]: (CRON) INFO (running with inotify support) Apr 12 08:41:39 lenovo systemd[1]: Starting OpenSSH server daemon... Apr 12 08:41:39 lenovo systemd[1]: Started OpenSSH server daemon. Apr 12 08:41:39 lenovo sshd[355]: Server listening on 0.0.0.0 port 22. Apr 12 08:41:39 lenovo sshd[355]: Server listening on :: port 22. Apr 12 08:41:39 lenovo mtp-probe[373]: checking bus 1, device 8: "/sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.5/1-1.5.6/1-1.5.6.2/1-1.5.6.2.1"
This commit is contained in:
parent
cd34b3c667
commit
b9e405246e
@ -332,7 +332,8 @@
|
||||
(<literal>_SYSTEMD_UNIT=</literal>)
|
||||
and additional matches for messages
|
||||
from systemd and messages about
|
||||
coredumps for the specified unit.
|
||||
coredumps for the specified unit.</para>
|
||||
<para>This parameter can be specified multiple times.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
@ -346,7 +347,8 @@
|
||||
and <literal>_UID=</literal>) and
|
||||
additional matches for messages from
|
||||
session systemd and messages about
|
||||
coredumps for the specified unit.
|
||||
coredumps for the specified unit.</para>
|
||||
<para>This parameter can be specified multiple times.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
|
@ -80,8 +80,8 @@ static usec_t arg_interval = DEFAULT_FSS_INTERVAL_USEC;
|
||||
#endif
|
||||
static usec_t arg_since, arg_until;
|
||||
static bool arg_since_set = false, arg_until_set = false;
|
||||
static const char *arg_unit = NULL;
|
||||
static bool arg_unit_system;
|
||||
static char **arg_system_units = NULL;
|
||||
static char **arg_user_units = NULL;
|
||||
static const char *arg_field = NULL;
|
||||
static bool arg_catalog = false;
|
||||
static bool arg_reverse = false;
|
||||
@ -437,13 +437,15 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
break;
|
||||
|
||||
case 'u':
|
||||
arg_unit = optarg;
|
||||
arg_unit_system = true;
|
||||
r = strv_extend(&arg_system_units, optarg);
|
||||
if (r < 0)
|
||||
return log_oom();
|
||||
break;
|
||||
|
||||
case ARG_USER_UNIT:
|
||||
arg_unit = optarg;
|
||||
arg_unit_system = false;
|
||||
r = strv_extend(&arg_user_units, optarg);
|
||||
if (r < 0)
|
||||
return log_oom();
|
||||
break;
|
||||
|
||||
case '?':
|
||||
@ -611,25 +613,39 @@ static int add_this_boot(sd_journal *j) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int add_unit(sd_journal *j) {
|
||||
static int add_units(sd_journal *j) {
|
||||
_cleanup_free_ char *u = NULL;
|
||||
int r;
|
||||
char **i;
|
||||
|
||||
assert(j);
|
||||
|
||||
if (isempty(arg_unit))
|
||||
return 0;
|
||||
|
||||
u = unit_name_mangle(arg_unit);
|
||||
if (!u)
|
||||
return log_oom();
|
||||
|
||||
if (arg_unit_system)
|
||||
STRV_FOREACH(i, arg_system_units) {
|
||||
u = unit_name_mangle(*i);
|
||||
if (!u)
|
||||
return log_oom();
|
||||
r = add_matches_for_unit(j, u);
|
||||
else
|
||||
if (r < 0)
|
||||
return r;
|
||||
r = sd_journal_add_disjunction(j);
|
||||
if (r < 0)
|
||||
return r;
|
||||
}
|
||||
|
||||
STRV_FOREACH(i, arg_user_units) {
|
||||
u = unit_name_mangle(*i);
|
||||
if (!u)
|
||||
return log_oom();
|
||||
|
||||
r = add_matches_for_user_unit(j, u, getuid());
|
||||
if (r < 0)
|
||||
return r;
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
r = sd_journal_add_disjunction(j);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
}
|
||||
|
||||
r = sd_journal_add_conjunction(j);
|
||||
if (r < 0)
|
||||
@ -1113,7 +1129,10 @@ int main(int argc, char *argv[]) {
|
||||
if (r < 0)
|
||||
return EXIT_FAILURE;
|
||||
|
||||
r = add_unit(j);
|
||||
r = add_units(j);
|
||||
strv_free(arg_system_units);
|
||||
strv_free(arg_user_units);
|
||||
|
||||
if (r < 0)
|
||||
return EXIT_FAILURE;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user