Nach der Installation von Autodesk Smoke werden ständig zwei httpd-Prozesse ausgeführt, und ich möchte sie stoppen. Wenn ich benutze sudo killall httpd
, hören sie auf und werden sofort neu gestartet. Der Aktivitätsmonitor zeigt an, dass der übergeordnete Prozess gestartet wird. Wie kann ich jedoch feststellen, welcher Agent oder Dämon ihn startet, damit ich ihn deaktivieren kann?
launchctl list | grep httpd
zeigt diese Ergebnisse:
302 - 0x7f94ea700dd0.anonymous.httpd
92 - org.apache.httpd
Ich schaue hinein /System/Library/LaunchDaemons/org.apache.httpd.plist
und es zeigt folgendes. Sie können sehen, dass es eingestellt ist disabled
. Das andere launchd
Element mit einem seltsamen Namen wird in einer Dateisystemsuche nicht angezeigt, daher habe ich keine Ahnung, was es ist.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Disabled</key>
<true/>
<key>Label</key>
<string>org.apache.httpd</string>
<key>EnvironmentVariables</key>
<dict>
<key>XPC_SERVICES_UNAVAILABLE</key>
<string>1</string>
</dict>
<key>ProgramArguments</key>
<array>
<string>/usr/sbin/httpd</string>
<string>-D</string>
<string>FOREGROUND</string>
</array>
<key>OnDemand</key>
<false/>
</dict>
</plist>
/usr/sbin/apachectl stop
weiß aber immer noch nicht, wie ich ihn nach jedem Neustart deaktivieren kann.launchctl unload
(obwohl ich nicht weiß, ob Sie dazu den Pfad zur Liste angeben müssen), (ii) Wenn er in Ihren Loginitems enthalten ist Verwenden Sie das Tool "Systemeinstellungen" -> "Benutzer und Gruppen" -> "Anmeldeelemente" -> Löschen Sie einen fehlerhaften Eintrag, falls gefunden.Antworten:
Sie können die Ausgabe von
launchctl list
für die PID abrufen:Dann zum Beispiel Look für eine Datei mit dem Namen
com.example.foo.plist
in~/Library/LaunchAgents/
,/Library/LaunchAgents/
oder/Library/LaunchDaemons/
.Bearbeiten: Der deaktivierte Schlüssel kann überschrieben werden in
/var/db/launchd.db/com.apple.launchd/overrides.plist
, der geändert wird, wenn erlaunchctl load -w
als root ausgeführt wird, oder in/var/db/launchd.db/com.apple.launchd.peruser.$UID/overrides.plist
, der geändert wird, wenn erlaunchctl load -w
als Benutzer ausgeführt wird.Wenn die mit OS X gelieferte Apache-Liste aktiviert wurde, können Sie sie durch Ausführen deaktivieren
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
.quelle
sudo launchctl list
.launchctl list
scheint nur Jobs zu enthalten, die vom Startprozess des Benutzers geladen wurden.Auf diese Weise erhalten Sie eine Liste aller Jobdefinitionen, auf die verwiesen wird
httpd
.quelle
Disabled
Schlüssel kann durch dieoverrides.plist
Dateien in / unten überschrieben werden/var/db/launchd.db/
. Außerdem kann ein deaktivierter Job weiterhin manuell (nicht automatisch während des Start- / Anmeldevorgangs) gestartet werden.grep -rn apache /private/var/db/launchd.db
und nur ein Ergebnis gefunden. Es ist deaktiviert. Ich muss herausfinden, wie dieser Dienst gestartet wird und wie ich ihn wirklich deaktivieren kann.Das Verhalten von launchctl hat sich dahingehend geändert, dass ein Dienst, der zwangsweise aktiviert wird, nicht den Inhalt der Quell-.plist ändert, sondern ein separates Verzeichnis (das Sie nicht ändern sollten). Überprüfen Sie die Manpage auf launchctl und die Option "-w" unter dem Befehl "load". Wenn Sie die Datei einfach untersuchen, müssen Sie nicht feststellen, ob sie deaktiviert ist oder nicht. Offensichtlich ist es nicht deaktiviert :)
Versuchen Sie "launchctl unload -w org.apache.httpd.plist". Wenn das für Sie funktioniert, können Sie es bei Bedarf weiterhin mit "launchctl start org.apache.httpd.plist" starten.
Wenn dies nicht funktioniert, versuchen Sie "launchctl remove org.apache.httpd.plist", damit Sie nicht manuell starten können.
quelle
Anhand des Beschriftungswerts (z. B.
org.apache.httpd
) können Sie versuchen,.plist
den folgenden Befehl zu finden:Um herauszufinden, was den Prozess gestartet hat, überprüfen Sie die übergeordneten PIDs, z
Oder verwenden Sie den
pstree
Befehl, indem Sie die PID manuell angeben, zquelle