4 votos

Encontrar el verdadero estado de los trabajos de launchd

launchctl list

launchctl bstree

Estos comandos muestran qué trabajos están activos, en reposo o inactivos, supuestamente. Nunca he visto personalmente un trabajo inactivo. Incluso los que he intentado desactivar aparecen como 'D'

Ahora, en /var/db/launchd.db hay archivos de texto que muestran, por usuario, qué trabajos están realmente deshabilitados, lamentablemente, el antiguo interruptor -w fue descontinuado, y la clave Disabled en la plist es solo un valor predeterminado. No sé por qué harían una cosa así, parece que no hay una forma de decir definitivamente

"El servicio X está desactivado."

Parece que ejecutando como root debería poder preguntar qué está activo y qué está inactivo. ¿Qué estoy haciendo mal?

EDICIÓN: Lo que estaba haciendo mal era ignorar

/var/db/launchd.db/com.apple.launchd/overrides.plist

Que aparentemente es el lugar definitivo para el estado actual de un demonio.

Afortunadamente, esto significa que el valor predeterminado estará en los archivos plist en /System/Launch* /Library/Launch* ~/Library/Launch* y uno simplemente puede eliminar (bueno copiar y mover) ese directorio y reiniciar para tener un conjunto predeterminado. Esto funcionó para mí recientemente.

5voto

LCC Puntos 572

La interfaz gráfica de launchd LaunchControl te dará una lista de servicios junto con su estado respectivo. Puedes ver si un trabajo ha sido desactivado mirando la casilla de verificación al lado del nombre del trabajo. Una casilla de verificación de color indica que la clave de "Disabled" ha sido anulada: una casilla de verificación roja representa un trabajo desactivado permanentemente, una verde para un trabajo activado permanentemente.

LauynchControl

3voto

Oskar Puntos 1242

El verdadero estado es si un trabajo está cargado actualmente o no.

Vuelve a leer la filosofía de launchd - los ítems 4 y 1 explican que launchd espera hasta el último momento antes de iniciar la tarea secundaria y que el proceso vendrá y se irá con el tiempo, la restricción y la desactivación de tareas según sea necesario.

Todos estos eventos se registran en el registro del sistema. top y ps te mostrarán los procesos actuales. Supongo que simplemente podrías adjuntar launchd a un depurador si necesitas saber el estado exacto, ya que el código actual no hace una lista a tu gusto.

-1voto

Regina Puntos 26

Gracias a la información proporcionada por chiggsy, pudimos solucionar un problema en Mountain Lion, donde org.apache.httpd aparecía como no en ejecución en "launchctl list", pero de hecho estaba en ejecución después del reinicio, lo que impedía que el httpd de MacPorts se ejecutara correctamente. Editar el archivo overrides.plist y establecer org.apache.httpd disabled=true fue la solución. Debe ser algo que ocurre al actualizar de Lion a Mountain Lion que habilita com.apache.httpd.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X