Entspricht dem Linux-Befehl "service" unter Mac OS zum Stoppen eines laufenden Prozesses / Dienstes

0

Ich möchte einen laufenden Treiber unter Mac OS anhalten, ihn dann mit einer anderen Version überschreiben und neu starten. Die Dateien werden am selben Ort überschrieben.

Wenn ich überschreibe und neu starte, startet der neue Treiber wie erwartet, aber ich möchte dies ohne den Neustart tun können. Wenn ich "ps -9" verwende, um die Prozesse abzubrechen, werden sie erneut gestartet. Gibt es einen ähnlichen Befehl wie Linux "service", um solche Prozesse zu steuern?

TenG
quelle

Antworten:

1

Benötigen Sie nur eine Klärung Ihrer Frage. Woher weißt du, dass dies ein Fahrer ist?

Die Prozesssteuerung wird normalerweise mit einer Variation des Befehls launchctl erreicht:

https://support.apple.com/de-hk/guide/terminal/script-management-with-launchd-apdc6c1077b-5d5d-4d35-9c19-60f2397b2369/mac

Der obige Link ist ziemlich gut für die Detaillierung der Serviceliste. Lassen Sie mich wissen, ob das hilft.

Die Fahrersteuerung ist ein bisschen anders. Das Treiberäquivalent unter macOS ist eine Kernel-Erweiterung (kext). Können Sie Folgendes versuchen?

# get root access
sudo bash -
# Attempt to unload kext
kextload | grep -i DRIVER_NAME

*if found*
kextunload DRIVER_NAME

Dies sollte den Treiber entladen. Sie können dann erzwingen, dass es in / System / Library / Extensions oder in einem anderen Verzeichnis, in dem es sich befindet, ersetzt wird. Führen Sie dann die folgenden Schritte aus:

# fix permissions
sudo chmod -R 755 /path/to/name.kext
sudo chown -R root:wheel /path/to/name.kext

# Attempt to load driver
kextload -v DRIVER_NAME

Weitere Informationen wären wichtig, aber dies ist die allgemeine Vorgehensweise, die ich befolgen würde.

AUF EIGENES RISIKO WEITERGEHEN !!

DaGr8Gatzby
quelle
Danke Gatzby. Um Ihre Frage zu beantworten, gab "kextload" ohne Argumente eine Fehlermeldung "Keine Kernel-Erweiterungen angegeben.". Ich habe keine Möglichkeit gefunden, einfach alles aufzulisten. Ich kann jedoch sehen, dass die Anwendung beim Start über / Library / LaunchAgents | daemons-Einträge und auch Ordner / Dateien unter / Library / Application Support gestartet wird. Launchctl stop scheint die Anwendung nicht wirklich zu stoppen. Ich habe versucht, die Prozesse über "ps" und "kill -9" zu identifizieren, aber sie werden erneut gestartet. Irgendwelche Ideen bitte?
TenG