6 votos

¿Qué hace realmente launchctl unload?

Cuando se ejecuta launchctl unload some.plist, ¿a qué se traduce específicamente este comando, en términos de comandos UNIX, etc.?

No hay nada en los archivos .plist que especifique algún "comando de línea de comandos para ejecutar cuando el usuario especifica descargar", ¿entonces macOS simplemente envía una señal kill al proceso? ¿O qué hace?

9voto

Steve Evans Puntos 155

SIGTERM

El comando unload de launchd envía una señal SIGTERM a los procesos secundarios asociados al trabajo en cuestión.

Procesos Desconectados

Si un proceso lanzado por un trabajo de launchd se ha desconectado de su proceso padre, entonces unload no afectará a ese proceso. Este es frecuentemente el caso de los procesos demonizados.

Código Fuente Original

Puedes descargar e inspeccionar el código fuente original de launchd. launchd ha sido reescrito desde entonces y ahora es de propiedad exclusiva de Apple, pero el original documenta el comportamiento esperado en unload.

0 votos

¡Muy buena respuesta! Entonces es SIGTERM, ¿verdad? Mi siguiente pregunta es si hay una forma estándar de UNIX (o macOS) de saber cuándo se ha finalizado por completo la detención de un daemon, porque el indicador no espera eso, ¿verdad? Estaré encantado de publicar una nueva pregunta al respecto si no encaja dentro del alcance de esta pregunta.

1 votos

Un proceso moderno de UNIX puede usar kqueue para ser notificado cuando un proceso termina, consulte stackoverflow.com/questions/22960188 y el origen de Chrome's kill_mac.cc. Para obtener respuestas más detalladas y hacer preguntas específicas sobre el shell, por favor realice una nueva pregunta.

2voto

akostar Puntos 129

Para responder mejor a esta pregunta, podemos analizar dos cosas: comandos UNIX y lo que hay en un archivo .plist.

Comenzando con un archivo .plist, el siguiente código suele estar allí

  CFBundleExecutable
  someApplication

El CFBundleExecutable identifica el nombre del archivo ejecutable principal del paquete. Para una aplicación, este es el ejecutable de la aplicación. Para un paquete cargable, es el binario que se cargará dinámicamente por el paquete.

Entonces al escribir launchctl unload some.plist le dirá a MacOS la clave para localizar el archivo ejecutable del paquete y 'descargarlo' o básicamente eliminarlo del sistema. Esto se hace a nivel de aplicación.

Cuando se utiliza un comando UNIX como kill se hace referencia a un proceso específico.

Ver qué es un Proceso vs Aplicación aquí es una buena lectura

Puedes profundizar en qué hay en los .plists y cómo funcionan en Apple

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