Après avoir installé Autodesk Smoke, j'ai deux processus httpd en cours d'exécution, et je voudrais les arrêter. Lorsque j'utilise sudo killall httpd
, ils s'arrêtent et sont redémarrés immédiatement. Le Moniteur d'activité montre que le processus parent est launchd, mais comment puis-je déterminer quel agent ou démon le démarre pour que je puisse le désactiver?
launchctl list | grep httpd
montre ces résultats:
302 - 0x7f94ea700dd0.anonymous.httpd
92 - org.apache.httpd
Je regarde /System/Library/LaunchDaemons/org.apache.httpd.plist
dedans et ça montre ce qui suit. Vous pouvez voir qu'il est réglé sur disabled
. L'autre launchd
élément avec un nom étrange n'apparaît pas dans une recherche de système de fichiers, donc je n'ai aucune idée de ce que c'est.
<?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
mais je ne sais toujours pas comment le désactiver après chaque redémarrage.launchctl unload
(bien que je ne sais pas si cela nécessite que vous spécifiiez le chemin vers le plist), (ii) Si c'est dans vos éléments de connexion , utilisez l'outil Préférences Système -> "Utilisateurs et groupes" -> "Éléments de connexion" -> Supprimer l'entrée incriminée si elle est trouvée.Réponses:
Vous pouvez grep la sortie de
launchctl list
pour le pid:Ensuite , par exemple regarder un fichier nommé
com.example.foo.plist
dans~/Library/LaunchAgents/
,/Library/LaunchAgents/
ou/Library/LaunchDaemons/
.Modifier: la clé désactivée peut être remplacée dans
/var/db/launchd.db/com.apple.launchd/overrides.plist
, qui est modifiée lorsqu'ellelaunchctl load -w
est exécutée en tant que root, ou dans/var/db/launchd.db/com.apple.launchd.peruser.$UID/overrides.plist
, qui est modifiée lorsqu'ellelaunchctl load -w
est exécutée en tant qu'utilisateur.Si le plist Apache fourni avec OS X a été activé, vous pouvez le désactiver en exécutant
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
.la source
sudo launchctl list
.launchctl list
ne semble inclure que les travaux chargés par le processus de lancement de l'utilisateur.Cela vous donne une liste de toutes les définitions d'emploi se rapportant à
httpd
.la source
Disabled
clé peut être remplacée par lesoverrides.plist
fichiers dans / ci-dessous/var/db/launchd.db/
. Un travail désactivé peut également être démarré manuellement (pas automatiquement pendant le processus de démarrage / connexion).grep -rn apache /private/var/db/launchd.db
et trouvé un seul résultat. C'est désactivé. J'ai besoin de comprendre comment ce service est démarré et comment le désactiver vraiment.Le comportement de launchctl a changé en ce que si un service est activé de force, il ne modifiera pas le contenu du .plist source, mais un répertoire séparé (que vous ne devriez pas modifier). Consultez la page de manuel pour launchctl, et l'option "-w" sous la commande "load". Ainsi, l'examen du fichier ne vous indiquera pas nécessairement s'il est désactivé ou non. Clairement ce n'est pas désactivé :)
Essayez "launchctl unload -w org.apache.httpd.plist". Si cela fonctionne pour vous, vous pourrez toujours le démarrer à la demande avec "launchctl start org.apache.httpd.plist"
Si cela ne fonctionne pas, essayez "launchctl remove org.apache.httpd.plist" qui ne vous permettra pas de démarrer manuellement.
la source
Sur la base de la valeur de l'étiquette (par exemple
org.apache.httpd
), vous pouvez essayer de trouver le.plist
à l'aide de la commande suivante:Pour trouver ce qui a démarré le processus, vérifiez ses PID parents, par exemple
Ou utilisez la
pstree
commande en spécifiant le PID manuellement, par exemplela source