mirror of
https://github.com/systemd/systemd.git
synced 2024-11-28 04:33:36 +08:00
journald: store _SYSTEMD_UNIT= instead of _SYSTEMD_SERVICE= field, since processes might also be related to mount, swap or socket units, not just services
This commit is contained in:
parent
e91af489a2
commit
94fb446e55
@ -1912,7 +1912,7 @@ MANPAGES_ALIAS += \
|
||||
man/sd_session_get_uid.3 \
|
||||
man/sd_session_get_seat.3 \
|
||||
man/sd_pid_get_owner_uid.3 \
|
||||
man/sd_pid_get_service.3 \
|
||||
man/sd_pid_get_unit.3 \
|
||||
man/sd_uid_is_on_seat.3 \
|
||||
man/sd_uid_get_sessions.3 \
|
||||
man/sd_uid_get_seats.3 \
|
||||
@ -1927,7 +1927,7 @@ man/sd_login_monitor_get_fd.3: man/sd_login_monitor_new.3
|
||||
man/sd_session_get_uid.3: man/sd_session_is_active.3
|
||||
man/sd_session_get_seat.3: man/sd_session_is_active.3
|
||||
man/sd_pid_get_owner_uid.3: man/sd_pid_get_session.3
|
||||
man/sd_pid_get_service.3: man/sd_pid_get_session.3
|
||||
man/sd_pid_get_unit.3: man/sd_pid_get_session.3
|
||||
man/sd_uid_is_on_seat.3: man/sd_uid_get_state.3
|
||||
man/sd_uid_get_sessions.3: man/sd_uid_get_state.3
|
||||
man/sd_uid_get_seats.3: man/sd_uid_get_state.3
|
||||
|
@ -44,7 +44,7 @@
|
||||
|
||||
<refnamediv>
|
||||
<refname>sd_pid_get_session</refname>
|
||||
<refname>sd_pid_get_service</refname>
|
||||
<refname>sd_pid_get_unit</refname>
|
||||
<refname>sd_pid_get_owner_uid</refname>
|
||||
<refpurpose>Determine session, service or owner of a session of a specific PID</refpurpose>
|
||||
</refnamediv>
|
||||
@ -60,9 +60,9 @@
|
||||
</funcprototype>
|
||||
|
||||
<funcprototype>
|
||||
<funcdef>int <function>sd_pid_get_service</function></funcdef>
|
||||
<funcdef>int <function>sd_pid_get_unit</function></funcdef>
|
||||
<paramdef>pid_t <parameter>pid</parameter></paramdef>
|
||||
<paramdef>char** <parameter>service</parameter></paramdef>
|
||||
<paramdef>char** <parameter>unit</parameter></paramdef>
|
||||
</funcprototype>
|
||||
|
||||
<funcprototype>
|
||||
@ -90,15 +90,16 @@
|
||||
<citerefentry><refentrytitle>free</refentrytitle><manvolnum>3</manvolnum></citerefentry>
|
||||
call after use.</para>
|
||||
|
||||
<para><function>sd_pid_get_service()</function> may be
|
||||
used to determine the system service identifier of a
|
||||
process identified by the specified process
|
||||
identifier. The service name is a short string,
|
||||
suitable for usage in file system paths. Note that not
|
||||
all processes are part of a service (e.g. user
|
||||
processes, or kernel threads). For processes not being
|
||||
part of a system service this function will fail. The
|
||||
returned string needs to be freed with the libc
|
||||
<para><function>sd_pid_get_unit()</function> may be
|
||||
used to determine the systemd unit (i.e. system
|
||||
service) identifier of a process identified by the
|
||||
specified process identifier. The unit name is a short
|
||||
string, suitable for usage in file system paths. Note
|
||||
that not all processes are part of a unit/service
|
||||
(e.g. user processes, or kernel threads). For
|
||||
processes not being part of a systemd unit/system
|
||||
service this function will fail. The returned string
|
||||
needs to be freed with the libc
|
||||
<citerefentry><refentrytitle>free</refentrytitle><manvolnum>3</manvolnum></citerefentry>
|
||||
call after use.</para>
|
||||
|
||||
@ -126,7 +127,7 @@
|
||||
<title>Notes</title>
|
||||
|
||||
<para>The <function>sd_pid_get_session()</function>,
|
||||
<function>sd_pid_get_service()</function>, and
|
||||
<function>sd_pid_get_pid()</function>, and
|
||||
<function>sd_pid_get_owner_uid()</function> interfaces
|
||||
are available as shared library, which can be compiled
|
||||
and linked to with the
|
||||
|
@ -431,7 +431,7 @@ static void dispatch_message_real(Server *s,
|
||||
*comm = NULL, *cmdline = NULL, *hostname = NULL,
|
||||
*audit_session = NULL, *audit_loginuid = NULL,
|
||||
*exe = NULL, *cgroup = NULL, *session = NULL,
|
||||
*owner_uid = NULL, *service = NULL;
|
||||
*owner_uid = NULL, *unit = NULL;
|
||||
|
||||
char idbuf[33];
|
||||
sd_id128_t id;
|
||||
@ -515,12 +515,12 @@ static void dispatch_message_real(Server *s,
|
||||
IOVEC_SET_STRING(iovec[n++], session);
|
||||
}
|
||||
|
||||
if (sd_pid_get_service(ucred->pid, &t) >= 0) {
|
||||
service = strappend("_SYSTEMD_SERVICE=", t);
|
||||
if (sd_pid_get_unit(ucred->pid, &t) >= 0) {
|
||||
unit = strappend("_SYSTEMD_UNIT=", t);
|
||||
free(t);
|
||||
|
||||
if (service)
|
||||
IOVEC_SET_STRING(iovec[n++], service);
|
||||
if (unit)
|
||||
IOVEC_SET_STRING(iovec[n++], unit);
|
||||
}
|
||||
|
||||
if (sd_pid_get_owner_uid(ucred->uid, &owner) >= 0)
|
||||
@ -596,7 +596,7 @@ retry:
|
||||
free(cgroup);
|
||||
free(session);
|
||||
free(owner_uid);
|
||||
free(service);
|
||||
free(unit);
|
||||
}
|
||||
|
||||
static void dispatch_message(Server *s,
|
||||
|
@ -35,7 +35,6 @@
|
||||
* - OR of matches is borked...
|
||||
* - extend hash tables table as we go
|
||||
* - accelerate looking for "all hostnames" and suchlike.
|
||||
* - hookup with systemctl
|
||||
* - handle incomplete header
|
||||
*
|
||||
* - local deserializer
|
||||
|
@ -36,5 +36,5 @@ local:
|
||||
|
||||
LIBSYSTEMD_LOGIN_38 {
|
||||
global:
|
||||
sd_pid_get_service;
|
||||
sd_pid_get_unit;
|
||||
} LIBSYSTEMD_LOGIN_31;
|
||||
|
@ -121,11 +121,11 @@ _public_ int sd_pid_get_session(pid_t pid, char **session) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
_public_ int sd_pid_get_service(pid_t pid, char **service) {
|
||||
_public_ int sd_pid_get_unit(pid_t pid, char **unit) {
|
||||
int r;
|
||||
char *cgroup, *p;
|
||||
|
||||
if (!service)
|
||||
if (!unit)
|
||||
return -EINVAL;
|
||||
|
||||
r = pid_get_cgroup(pid, NULL, &cgroup);
|
||||
@ -144,7 +144,7 @@ _public_ int sd_pid_get_service(pid_t pid, char **service) {
|
||||
if (!p)
|
||||
return -ENOMEM;
|
||||
|
||||
*service = p;
|
||||
*unit = p;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -53,9 +53,9 @@ int sd_pid_get_session(pid_t pid, char **session);
|
||||
* return an error for system processes. */
|
||||
int sd_pid_get_owner_uid(pid_t pid, uid_t *uid);
|
||||
|
||||
/* Get service name from PID. This will return an error for
|
||||
* non-service processes. */
|
||||
int sd_pid_get_service(pid_t, char **service);
|
||||
/* Get systemd unit (i.e. service) name from PID. This will return an
|
||||
* error for non-service processes. */
|
||||
int sd_pid_get_unit(pid_t, char **unit);
|
||||
|
||||
/* Get state from uid. Possible states: offline, lingering, online, active */
|
||||
int sd_uid_get_state(uid_t uid, char**state);
|
||||
|
@ -359,7 +359,7 @@ int show_journal_by_service(
|
||||
if (!prefix)
|
||||
prefix = "";
|
||||
|
||||
if (asprintf(&m, "_SYSTEMD_SERVICE=%s", service) < 0) {
|
||||
if (asprintf(&m, "_SYSTEMD_UNIT=%s", service) < 0) {
|
||||
r = -ENOMEM;
|
||||
goto finish;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user