Po zainstalowaniu programu Autodesk Smoke mam cały czas dwa procesy httpd i chciałbym je zatrzymać. Kiedy używam sudo killall httpd
, zatrzymują się i są natychmiast ponownie uruchamiane. Monitor aktywności pokazuje, że proces nadrzędny został uruchomiony, ale jak ustalić, który agent lub demon go uruchamia, aby go wyłączyć?
launchctl list | grep httpd
pokazuje te wyniki:
302 - 0x7f94ea700dd0.anonymous.httpd
92 - org.apache.httpd
Patrzę /System/Library/LaunchDaemons/org.apache.httpd.plist
i pokazuje, co następuje. Możesz zobaczyć, że jest ustawiony na disabled
. Drugi launchd
element o dziwnej nazwie nie pojawia się podczas wyszukiwania systemu plików, więc nie mam pojęcia, co to jest.
<?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
ale nadal nie wiem, jak go wyłączyć po każdym ponownym uruchomieniu.launchctl unload
(chociaż nie wiem, czy to wymaga określenia ścieżki do listy odtwarzania), (ii) Jeśli jest to w loginitems , użyj narzędzia Preferencje systemowe -> „Użytkownicy i grupy” -> „Elementy logowania” -> Usuń niepoprawny wpis, jeśli został znaleziony.Odpowiedzi:
Możesz grep wynik
launchctl list
dla pid:Wtedy na przykład szukał pliku o nazwie
com.example.foo.plist
w~/Library/LaunchAgents/
,/Library/LaunchAgents/
lub/Library/LaunchDaemons/
.Edycja: klucz Wyłączony można zastąpić
/var/db/launchd.db/com.apple.launchd/overrides.plist
, który jest modyfikowany, gdylaunchctl load -w
jest uruchamiany jako root, lub w/var/db/launchd.db/com.apple.launchd.peruser.$UID/overrides.plist
, który jest modyfikowany, gdylaunchctl load -w
jest uruchamiany jako użytkownik.Jeśli włączona jest lista Apache dostarczana z systemem OS X, można ją wyłączyć, uruchamiając
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
.źródło
sudo launchctl list
.launchctl list
wydaje się, że obejmuje tylko zadania załadowane przez proces uruchamiany przez użytkownika.Daje to listę wszystkich odnośnych definicji zadań
httpd
.źródło
Disabled
Klucz może być nadpisane przezoverrides.plist
pliki w / poniżej/var/db/launchd.db/
. Wyłączone zadanie może być nadal uruchamiane ręcznie (nie automatycznie podczas procesu rozruchu / logowania).grep -rn apache /private/var/db/launchd.db
i znalazłem tylko jeden wynik. Jest wyłączone. Muszę dowiedzieć się, jak ta usługa jest uruchamiana i jak naprawdę ją wyłączyć.Zmieniało się zachowanie launchctl, jeśli usługa zostanie włączona siłą, nie zmieni zawartości źródłowej .plist, ale osobny katalog (którego nie należy modyfikować). Sprawdź stronę man pod kątem launchctl i opcję „-w” pod poleceniem „load”. Tak więc samo sprawdzenie pliku nie będzie konieczne, aby stwierdzić, czy jest on wyłączony, czy nie. Oczywiście nie jest wyłączone :)
Spróbuj „launchctl unload -w org.apache.httpd.plist”. Jeśli to zadziała, nadal będziesz mógł uruchomić go na żądanie za pomocą „launchctl start org.apache.httpd.plist”
Jeśli to nie zadziała, spróbuj „launchctl remove org.apache.httpd.plist”, który nie pozwoli ci ręcznie uruchomić.
źródło
Na podstawie wartości etykiety (np.
org.apache.httpd
) Możesz spróbować znaleźć.plist
następujące polecenie:Aby znaleźć początek procesu, sprawdź jego nadrzędne identyfikatory PID, np
Lub użyj
pstree
polecenia, określając ręcznie PID, npźródło