Jaka jest różnica między „nazwą usługi” a „celem usługi”?

27

Rozważ następujące polecenia

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

Jaka jest różnica między celem usługi a nazwą usługi? Jak mogę nauczyć się celu usługi na podstawie jej nazwy usługi?

sernik
źródło

Odpowiedzi:

29

Cel usługi to nazwa usługi plus domena docelowa, która opisuje kontekst, w którym usługa jest uruchamiana, np. Czy działa przy starcie systemu, czy podczas logowania określonego użytkownika itp.

Strona manuala launchctl (1) opisuje 6 sposobów tworzenia celu usługi na podstawie nazwy usługi. Jeśli chcesz wyłączyć usługę uruchamianą podczas uruchamiania, prawdopodobnie potrzebujesz jednej z tych trzech, w zależności od tego, czy jest to usługa uruchamiana podczas uruchamiania systemu, czy po zalogowaniu:

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.

Możesz znaleźć numer UID swojego konta użytkownika w następujący sposób:

$ id -u [your-username]
502
sengi
źródło
25
Czy istnieje sposób przejścia z „etykiety” usługi lub PID wyświetlanej przez launchchtl listdo „usługi docelowej” bez wypróbowania wszystkich tych możliwych domen?
glon