mirror of
https://github.com/AuxXxilium/eudev.git
synced 2025-01-19 02:28:04 +07:00
journalctl: support device node matches as shortcut
This commit is contained in:
parent
5b4c61cd0b
commit
b6a345143b
@ -86,6 +86,15 @@
|
||||
command line all matches before and after are combined
|
||||
in a disjunction (i.e. logical OR).</para>
|
||||
|
||||
<para>As shortcuts for a few types of field/value
|
||||
matches file paths may be specified. If a file path
|
||||
refers to an executable file, this is equivalent to an
|
||||
<literal>_EXE=</literal> match for the canonicalized
|
||||
binary path. Similar, if a path refers to a device
|
||||
node, this is equivalent to a
|
||||
<literal>_KERNEL_DEVICE=</literal> match for the
|
||||
device.</para>
|
||||
|
||||
<para>Output is interleaved from all accessible
|
||||
journal files, whether they are rotated or currently
|
||||
being written, and regardless whether they belong to the
|
||||
@ -357,6 +366,14 @@
|
||||
|
||||
<programlisting>journalctl _SYSTEMD_UNIT=avahi-daemon.service _PID=28097 + _SYSTEMD_UNIT=dbus.service</programlisting>
|
||||
|
||||
<para>Show all logs generated by the D-Bus executable:</para>
|
||||
|
||||
<programlisting>journalctl /usr/bin/dbus-daemon</programlisting>
|
||||
|
||||
<para>Show all logs of the kernel device node <filename>/dev/sda</filename>:</para>
|
||||
|
||||
<programlisting>journalctl /dev/sda</programlisting>
|
||||
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
|
@ -305,7 +305,7 @@ static int add_matches(sd_journal *j, char **args) {
|
||||
if (streq(*i, "+"))
|
||||
r = sd_journal_add_disjunction(j);
|
||||
else if (path_is_absolute(*i)) {
|
||||
char *p;
|
||||
char *p, *t = NULL;
|
||||
const char *path;
|
||||
struct stat st;
|
||||
|
||||
@ -318,24 +318,25 @@ static int add_matches(sd_journal *j, char **args) {
|
||||
return -errno;
|
||||
}
|
||||
|
||||
if (S_ISREG(st.st_mode) && (0111 & st.st_mode)) {
|
||||
char *t;
|
||||
|
||||
if (S_ISREG(st.st_mode) && (0111 & st.st_mode))
|
||||
t = strappend("_EXE=", path);
|
||||
if (!t) {
|
||||
free(p);
|
||||
return log_oom();
|
||||
}
|
||||
|
||||
r = sd_journal_add_match(j, t, 0);
|
||||
free(t);
|
||||
} else {
|
||||
else if (S_ISCHR(st.st_mode))
|
||||
asprintf(&t, "_KERNEL_DEVICE=c%u:%u", major(st.st_rdev), minor(st.st_rdev));
|
||||
else if (S_ISBLK(st.st_mode))
|
||||
asprintf(&t, "_KERNEL_DEVICE=b%u:%u", major(st.st_rdev), minor(st.st_rdev));
|
||||
else {
|
||||
free(p);
|
||||
log_error("File is not a regular file or is not executable: %s", *i);
|
||||
log_error("File is not a device node, regular file or is not executable: %s", *i);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
free(p);
|
||||
|
||||
if (!t)
|
||||
return log_oom();
|
||||
|
||||
r = sd_journal_add_match(j, t, 0);
|
||||
free(t);
|
||||
} else
|
||||
r = sd_journal_add_match(j, *i, 0);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user