Mac - Autostart

Aus Wikizone
Wechseln zu: Navigation, Suche

Links[Bearbeiten]

https://support.apple.com/de-de/guide/terminal/apdc6c1077b-5d5d-4d35-9c19-60f2397b2369/mac
https://www.macwelt.de/ratgeber/OS-X-Autostart-im-Griff-behalten-9775629.html
  • Benutzer und Gruppen > Anmeldeobjekte
  • Prozesse werden seit Tiger mit dem Launchdeamon verwaltet. Deamons von Drittanbieter bleiben manchmal nach der Deinstallation übrig.
launchctl

Tools[Bearbeiten]

KnockKnock

Wissen[Bearbeiten]

Seit Sommer 2019 stuft Apple Kernel Extensions generell als abgekündigt ("deprecated") ein. Zukünftige macOS-Versionen werden die Erweiterungen nicht mehr laden, ob dies bereits mit macOS 10.16 ab Herbst 2020 der Fall ist, wurde bislang noch nicht bekanntgegeben.

Die neuen "System Extensions" sollen schrittweise klassische Kernel-Erweiterungen ablösen. Sie können nicht mehr so tief in das System eingreifen: Statt im Kernelspace laufen die System Extensions im Userspace. Das gehöre zu den Maßnahmen rund um die Modernisierung der Plattform, wie Apple im Developer-Support-Bereich erklärt, zudem solle es Sicherheit und Zuverlässigkeit des Systems erhöhen.

Es ist übrigens nicht nötig, einen Agent oder Daemon zu löschen, man kann ihn über die Funktion „Unload“ deaktivieren. Er wird dann nicht mehr von launchd geladen.

Glossar – Die wichtigsten Begriffe[Bearbeiten]

launchd

Das Framework launchd ist bei OS X das zentrale Framework für das Starten, Beenden und Verwalten von Prozessen und Skripts.

launchctl

Für die Administration von launchd ist das Tool launchctl zuständig. Man kann damit beispielsweise sämtliche geladenen Prozesse auflisten oder analysieren.

Dämonen und Agents

So genannte „Daemons“ beziehungsweise Dämonen sind systemweit agierende Dienste, die keine Nutzerinteraktion erfordern – sie haben keine eigene Bedienoberfläche. Oft erkennt man sie am Suffix „d“ wie den Time-Machine-Prozess „backupd“. „Agents“ dagegen ist immer auf einen Nutzer bezogen.

Jobs

Das Verhalten von Daemons und Agents wird über eine XLM-Datei beziehungsweise Property List verwaltet, die man auch als „Job“ bezeichnet.

Dienste

Unter Windows sind Systemdienste das Äquivalent zu den Daemons. Im Web und Fachmedien werden aber auch die Mac-Daemons oft als Systemdienste bezeichnet. Das führt leicht zu Verwirrung, da man beim Mac unter „Dienste“ nur die auch „Services“ genannten Programmfunktionen versteht, die man per Tastaturbefehle oder Dienstemenü aufruft.

Anmeldeobjekt

Soll beim Systemstart automatisch ein Programm starten, ist ein Launchagent unnötig. Über die Systemeinstellung Benutzer kann man ein Programm oder auch Skript als Anmeldeobjekte eintragen.

Daemon kontrollieren - launchctl[Bearbeiten]

Skriptverwaltung mit launchd in Terminal auf dem Mac Während macOS den Prozess launchd verwendet, um Daemons und Agents zu verwalten, kannst du damit deine Shell-Skripts ausführen. Du interagierst nicht direkt mit launchd, sondern verwendest stattdessen den Befehl launchctl zum Laden oder Entladen von launchd-Daemons und -Agents.

Wenn das System gestartet wird, ist launchd der erste Prozess, den der Kernel zum Einrichten des Computers ausführt. Soll das Shell-Skript als Daemon ausgeführt werden, muss es von launchd gestartet werden. Andere Mechanismen zum Starten von Daemons und Agents können nach Ermessen von Apple entfernt werden.

Die Konfigurationsdateien in den folgenden Ordnern vermitteln dir einen Eindruck von den verschiedenen Daemons und Agents, die von launchd verwaltet werden:

Ordner | Verwendung

/System/Library/LaunchDaemons

Von Apple bereitgestellte System-Daemons

/System/Library/LaunchAgents

Von Apple bereitgestellte Agents, die für alle Benutzer auf Benutzerbasis gelten

/Library/LaunchDaemons

System-Daemons anderer Anbieter

/Library/LaunchAgents

Agents anderer Anbieter, die für alle Benutzer auf Benutzerbasis gelten

~/Library/LaunchAgents

Agents anderer Anbieter, die nur für den angemeldeten Benutzer gelten

Laden (aktivieren) Entladen[Bearbeiten]

Beispiel:

$ sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist 

You can stop the service using the unload subcommand.

$ sudo launchctl unload  /System/Library/LaunchDaemons/ssh.plist 

Mit KnockKnock kann man gut die Dienste auflisten die laufen.