Cómo averiguar qué agente de lanzamiento o demonio está iniciando un proceso

11

Después de instalar Autodesk Smoke, tengo dos procesos httpd en ejecución todo el tiempo y me gustaría detenerlos. Cuando uso sudo killall httpd , se detienen y se reinician de inmediato. El Monitor de actividad muestra que el proceso principal es launchd, pero ¿cómo puedo determinar qué agente o demonio lo está iniciando para poder desactivarlo?

launchctl list | grep httpd muestra estos resultados:

302 -   0x7f94ea700dd0.anonymous.httpd  
92  -   org.apache.httpd

Busco en /System/Library/LaunchDaemons/org.apache.httpd.plist y muestra lo siguiente. Puedes ver que está establecido en disabled . El otro elemento launchd con un nombre extraño no aparece en una búsqueda del sistema de archivos, por lo que no tengo idea de qué es.

<?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>
    
pregunta Elliott 06.12.2013 - 18:14

4 respuestas

5

Puede grep la salida de launchctl list para el pid:

$ pgrep -fl foo
40679 bash /tmp/foo
$ launchctl list|grep 40679
40679   -   com.example.foo

Luego, por ejemplo, busque un archivo llamado com.example.foo.plist en ~/Library/LaunchAgents/ , /Library/LaunchAgents/ o /Library/LaunchDaemons/ .

Editar: la clave Deshabilitada se puede reemplazar en /var/db/launchd.db/com.apple.launchd/overrides.plist , que se modifica cuando launchctl load -w se ejecuta como root, o en /var/db/launchd.db/com.apple.launchd.peruser.$UID/overrides.plist , que se modifica cuando launchctl load -w se ejecuta como usuario.

Si la lista de Apache que viene con OS X estaba habilitada, puedes deshabilitarla ejecutando sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist .

    
respondido por el user495470 07.12.2013 - 08:36
0

Esto le da una lista de todas las definiciones de trabajo que se refieren a httpd .

grep -lR httpd /System/Library/Launch*/ /Library/Launch*/ ~/Library/LaunchAgents/
    
respondido por el LCC 08.12.2013 - 16:09
0

El comportamiento de launchctl ha cambiado, ya que si un servicio se habilita a la fuerza, no modificará el contenido de la fuente .plist, pero un directorio separado (que no debe modificar). Consulte la página de manual de launchctl y la opción "-w" bajo el comando "cargar". Por lo tanto, simplemente examinar el archivo no será necesario decirle si está deshabilitado o no. Claramente no está deshabilitado :)

Pruebe "launchctl unload -w org.apache.httpd.plist". Si eso funciona para usted, aún podrá iniciarlo a pedido con "launchctl start org.apache.httpd.plist"

Si eso no funciona, intente "launchctl remove org.apache.httpd.plist" que no le permitirá iniciar manualmente.

    
respondido por el Chris Cogdon 10.03.2016 - 20:25
0

Según el valor de la etiqueta (por ejemplo, org.apache.httpd ), puedes intentar encontrar el .plist con el siguiente comando:

  

find /System/Library/Launch* /Library/Launch* ~/Library/Launch* -name '*.plist' -print -exec /usr/libexec/PlistBuddy -c "Print Label" {} ';' | grep org.apache.httpd -A1

Para encontrar qué inició el proceso, verifique sus PID principales, por ejemplo

ps -f $(launchctl list | grep org.apache.httpd | grep -o '^[0-9]\+')

O usa el comando pstree especificando el PID manualmente, por ejemplo

pstree 92
    
respondido por el kenorb 11.01.2018 - 22:43

Lea otras preguntas en las etiquetas