Depois de instalar o Autodesk Smoke, tenho dois processos httpd em execução o tempo todo e gostaria de interrompê-los. Quando uso sudo killall httpd
, eles param e são reiniciados imediatamente. O Activity Monitor mostra que o processo pai foi iniciado, mas como determino qual agente ou daemon o está iniciando para poder desativá-lo?
launchctl list | grep httpd
mostra estes resultados:
302 - 0x7f94ea700dd0.anonymous.httpd
92 - org.apache.httpd
Eu olho /System/Library/LaunchDaemons/org.apache.httpd.plist
e mostra o seguinte. Você pode ver que está definido como disabled
. O outro launchd
item com um nome estranho não aparece em uma pesquisa no sistema de arquivos, então não tenho idéia do que é.
<?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
mas ainda não sei como desabilitá-lo após cada reinicialização.launchctl unload
(embora eu não saiba se isso precisa que você especifique o caminho para o plist), (ii) Se estiver nos itens de login , use a ferramenta Preferências do sistema -> "Usuários e grupos" -> "Itens de login" -> Excluir entrada incorreta, se encontrada.Respostas:
Você pode grep a saída de
launchctl list
para o pid:Então, por exemplo, olhar para um arquivo nomeado
com.example.foo.plist
em~/Library/LaunchAgents/
,/Library/LaunchAgents/
ou/Library/LaunchDaemons/
.Editar: a chave Desabilitada pode ser substituída
/var/db/launchd.db/com.apple.launchd/overrides.plist
, modificada quandolaunchctl load -w
executada como raiz, ou/var/db/launchd.db/com.apple.launchd.peruser.$UID/overrides.plist
modificada quandolaunchctl load -w
executada como usuário.Se o Apache plist que acompanha o OS X estiver ativado, você poderá desativá-lo executando
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
.fonte
sudo launchctl list
.launchctl list
apenas parece incluir trabalhos carregados pelo processo de inicialização do usuário.Isso fornece uma lista de todas as definições de trabalho referentes a
httpd
.fonte
Disabled
chave pode ser substituída pelosoverrides.plist
arquivos em / abaixo/var/db/launchd.db/
. Além disso, um trabalho desabilitado ainda pode ser iniciado manualmente (não automaticamente durante o processo de inicialização / login).grep -rn apache /private/var/db/launchd.db
e encontrei apenas um resultado. Está desativado. Preciso descobrir como esse serviço está sendo iniciado e como realmente desabilitá-lo.O comportamento do launchctl mudou porque, se um serviço for ativado à força, ele não modificará o conteúdo do arquivo .plist de origem, mas um diretório separado (que você não deve modificar). Verifique a página do manual quanto ao launchctl e a opção "-w" sob o comando "load". Portanto, basta examinar o arquivo e não será necessário informar se está desativado ou não. Claramente não está desativado :)
Tente "launchctl unload -w org.apache.httpd.plist". Se isso funcionar para você, você ainda poderá iniciá-lo sob demanda com "launchctl start org.apache.httpd.plist"
Se isso não funcionar, tente "launchctl remove org.apache.httpd.plist", que não permitirá que você inicie manualmente.
fonte
Com base no valor do rótulo (por exemplo
org.apache.httpd
), você pode tentar encontrar.plist
o seguinte comando:Para descobrir o que iniciou o processo, verifique os PIDs pai, por exemplo
Ou use o
pstree
comando especificando o PID manualmente, por exemplofonte