mirror of
https://github.com/systemd/systemd.git
synced 2024-12-23 21:35:11 +03:00
analyze: various cleanups
This commit is contained in:
parent
903a0b07e0
commit
816f25e86a
@ -93,20 +93,21 @@
|
||||
been started at what time, highlighting the time they
|
||||
spent on initialization.</para>
|
||||
|
||||
<para><command>systemd-analyze dot</command>
|
||||
Generate textual dependency graph description in dot
|
||||
format for further processing with the GraphViz
|
||||
<para><command>systemd-analyze dot</command> Generate
|
||||
textual dependency graph description in dot format for
|
||||
further processing with the GraphViz
|
||||
<citerefentry><refentrytitle>dot</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
||||
tool. Use a command line like <command>systemd-analyze
|
||||
dot | dot -Tsvg > systemd.svg</command> to generate
|
||||
a graphical dependency tree. Unless
|
||||
dot | dot -Tsvg > systemd.svg</command> to generate a
|
||||
graphical dependency tree. Unless
|
||||
<option>--order</option> or <option>--require</option>
|
||||
is passed the generated graph will show both ordering
|
||||
and requirement dependencies.</para>
|
||||
|
||||
<para>Optional patterns may be given at the end. The
|
||||
relationship is printed if any of these matches either
|
||||
lefthand or righthand node.</para>
|
||||
and requirement dependencies. Optional pattern
|
||||
globbing style specifications
|
||||
(e.g. <filename>*.target</filename>) may be given at
|
||||
the end. A unit dependency is included in the graph if
|
||||
any of these patterns match either the origin or
|
||||
destination node.</para>
|
||||
|
||||
<para>If no command is passed <command>systemd-analyze
|
||||
time</command> is implied.</para>
|
||||
@ -191,6 +192,23 @@
|
||||
code otherwise.</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Examples</title>
|
||||
|
||||
<para>This plots all dependencies of any unit whose
|
||||
name starts with "<literal>avahi-daemon.</literal>":</para>
|
||||
|
||||
<programlisting>$ systemd-analyze dot 'avahi-daemon.*' | dot -Tsvg > avahi.svg
|
||||
$ eog avahi.svg</programlisting>
|
||||
|
||||
<para>This plots the dependencies between all known target units:</para>
|
||||
|
||||
<programlisting>systemd-analyze dot --to-pattern='*.target' --from-patter='*.target' | dot -Tsvg > targets.svg
|
||||
$ eog targets.svg</programlisting>
|
||||
|
||||
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>See Also</title>
|
||||
<para>
|
||||
|
@ -626,40 +626,48 @@ static int graph_one_property(const char *name, const char *prop, DBusMessageIte
|
||||
dbus_message_iter_next(&sub)) {
|
||||
const char *s;
|
||||
char **p;
|
||||
bool match_found = true;
|
||||
bool match_found;
|
||||
|
||||
assert(dbus_message_iter_get_arg_type(&sub) == DBUS_TYPE_STRING);
|
||||
dbus_message_iter_get_basic(&sub, &s);
|
||||
|
||||
STRV_FOREACH(p, arg_dot_from_patterns) {
|
||||
if (!strv_isempty(arg_dot_from_patterns)) {
|
||||
match_found = false;
|
||||
if (fnmatch(*p, name, 0) == 0) {
|
||||
match_found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!match_found)
|
||||
continue;
|
||||
|
||||
STRV_FOREACH(p, arg_dot_to_patterns) {
|
||||
match_found = false;
|
||||
if (fnmatch(*p, s, 0) == 0) {
|
||||
match_found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!match_found)
|
||||
continue;
|
||||
STRV_FOREACH(p, arg_dot_from_patterns)
|
||||
if (fnmatch(*p, name, 0) == 0) {
|
||||
match_found = true;
|
||||
break;
|
||||
}
|
||||
|
||||
STRV_FOREACH(p, patterns) {
|
||||
match_found = false;
|
||||
if (fnmatch(*p, name, 0) == 0 || fnmatch(*p, s, 0) == 0) {
|
||||
match_found = true;
|
||||
break;
|
||||
}
|
||||
if (!match_found)
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!strv_isempty(arg_dot_to_patterns)) {
|
||||
match_found = false;
|
||||
|
||||
STRV_FOREACH(p, arg_dot_to_patterns)
|
||||
if (fnmatch(*p, s, 0) == 0) {
|
||||
match_found = true;
|
||||
break;
|
||||
}
|
||||
|
||||
if (!match_found)
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!strv_isempty(patterns)) {
|
||||
match_found = false;
|
||||
|
||||
STRV_FOREACH(p, patterns)
|
||||
if (fnmatch(*p, name, 0) == 0 || fnmatch(*p, s, 0) == 0) {
|
||||
match_found = true;
|
||||
break;
|
||||
}
|
||||
if (!match_found)
|
||||
continue;
|
||||
}
|
||||
if (!match_found)
|
||||
continue;
|
||||
|
||||
printf("\t\"%s\"->\"%s\" %s;\n", name, s, c);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user