Recientemente me encontré con un problema en mi red programa no se unen a un puerto porque ya estaba en uso. Abrí el monitor de actividad y se dio cuenta de que (llamado "servidor") ya se estaba ejecutando previamente, a pesar de que yo había cerrado la ventana y fue supuestamente terminado. Dejar de fumar o de la Fuerza de Cierre en el proceso de hacer nada. Incluso he reiniciado el equipo, pero todavía estaba allí! Esto no ha sucedido con mi programa antes. Incluso me escribió en el terminal kill 4517
y no pasó nada. Ayuda?
Respuestas
¿Demasiados anuncios?OS X utiliza un proceso de lanzamiento de un sistema llamado launchd que consolida las funciones proporcionadas por los scripts de inicio, crontab y más en los sistemas *nix (ver el artículo de la Wikipedia para un alto nivel de información general, y de Desarrolladores de Apple, google docs en el lanzamiento de los demonios y de los agentes para más detalles). Una de las habilidades de launchd es mantener un proceso que se inició con vida, si es así que se define por su archivo de configuración – en ese caso, el proceso se reiniciará cada vez que se termina. Su problema con un proceso aparentemente la persistencia a través de los reinicios y el manual de la terminación suena muy parecida a la de un caso de launchd inició el proceso con un keepAlive
clave.
launchd archivos de configuración están en plist formato y se encuentra en
-
~/Library/LaunchAgents
– agentes para la cuenta de usuario actual sólo -
/Library/LaunchAgents
y/Library/LaunchDaemons
– de los agentes y de los demonios para todas las cuentas de usuario -
/System/Library/LaunchAgents
y/System/Library/LaunchDaemons
– sistema de nivel de los agentes y de los demonios
y son generalmente llamado a la inversa de dominio de la notación (tld.domain.process.plist
). Dependiendo de si la cuenta de usuario de server
es tuyo o no (no se puede decir, como se han borrado), usted debe buscar en uno de los dos primeros lugares por encima de un probable plist (si usted tiene Xcode instalado, usted puede QuickLook fácilmente). Si se encuentra, su server
es de hecho controlado por launchd. El procedimiento correcto para detenerlo es para eliminarlo de launchd's lista de procesos a través de
launchctl unload <tld.domain.process>
que descargar y detener el proceso (nota omite el plist
sufijo).
También hay una interfaz gráfica de usuario para el manejo de launchd archivos, Pedro de Borg Lingon (asegúrese de obtener "Lingon", no "Lingon 3", que es un atontada versión segura de vainilla), que podría ser más conveniente que el manual del rooting a través de las ubicaciones de archivo.