Was ist der Unterschied zwischen einem „Dienstnamen“ und einem „Dienstziel“?

Betrachten Sie die folgenden Befehle

# launchctl stop 
Usage: launchctl stop <service-name>
# launchctl stop com.apple.SomeService
# launchctl disable com.apple.SomeService
Usage: launchctl disable <service-target>

Was ist der Unterschied zwischen einem Dienstziel und einem Dienstnamen? Wie kann ich ein Dienstziel eines Dienstes aus seinem Dienstnamen lernen?

Antworten (1)

Ein Dienstziel ist ein Dienstname plus eine Zieldomäne, die den Kontext beschreibt, in dem der Dienst ausgeführt wird, z. B. ob er beim Systemstart ausgeführt wird oder wenn sich ein bestimmter Benutzer anmeldet usw.

Die Manpage launchctl(1) beschreibt 6 Möglichkeiten, ein Dienstziel aus einem Dienstnamen zu bilden. Wenn Sie einen Dienst deaktivieren möchten, der beim Start ausgeführt wird, möchten Sie wahrscheinlich einen dieser drei Dienste, je nachdem, ob es sich um einen Dienst handelt, der beim Systemstart oder bei der Anmeldung ausgeführt wird:

system/[service-name]
    Targets the system domain or a service within the system domain. The system
    domain manages the root Mach bootstrap and is considered a privileged execu-
    tion context. Anyone may read or query the system domain, but root privi-
    leges are required to make modifications.

user/<uid>/[service-name]
    Targets the user domain for the given UID or a service within that domain. A
    user domain may exist independently of a logged-in user. User domains do not
    exist on iOS.

gui/<uid>/[service-name]
    Another form of the login specifier. Rather than specifying a user-login
    domain by its ASID, this specifier targets the domain based on which user it
    is associated with and is generally more convenient.

Die UID-Nummer Ihres Benutzerkontos können Sie wie folgt herausfinden:

$ id -u
502
Gibt es eine Möglichkeit, vom Dienst "Label" oder der PID, die von angezeigt werden launchchtl list, zum "Service-Target" zu wechseln, ohne alle diese möglichen Domänen auszuprobieren?
verwenden gui/<PID>/<service-name>stattuser/<PID>/<service-name>
Wenn Sie die mit der PID verknüpften Dienste anzeigen möchten, verwenden Sie in der Launchctl-Liste launchctl print pid/<pid>Fails manchmal mit Domäne konnte nicht gedruckt werden: 1: Vorgang nicht zulässig.
Wenn Sie "Vorgang nicht erlaubt" erhalten, versuchen Sie es sudo launchctl....