Identifique un auxiliar de VPN en el Mac antes de matar el proceso
Relacione un proceso de VPN con su ejecutable, su controlador y su función de red antes de detenerlo, y luego use la ruta de parada del propietario en lugar de una señal.
Trate un mensaje sobre un auxiliar que ya se ejecuta como una pista del ciclo de vida, no como permiso para empezar a matar procesos. El paso peligroso no es la detención en sí, sino la identificación previa, porque en un Mac pueden existir varios componentes con nombres parecidos y solo uno de ellos posee la conexión. Construya primero el registro de identidad. Después decida si detenerlo es siquiera la acción correcta.
Construya un registro de identidad antes de actuar
Cuatro datos hacen identificable un proceso: el PID actual con su hora de inicio, el ejecutable y el producto al que pertenece, el contexto de usuario o de privilegios bajo el que se ejecuta, y lo que sea que lo inició. ps -o pid,ppid,user,etime,command -p 1234 le da los tres primeros en una línea, incluido cuánto tiempo lleva vivo el proceso. Monitor de Actividad muestra la misma información con una cara más amable. Añada el controlador, es decir, la aplicación o el servicio responsable de iniciarlo y detenerlo. Con esos cuatro, un proceso deja de ser un nombre y se convierte en un objeto sobre el que puede razonar.
Si uno de los cuatro es desconocido, deténgase ahí. Un componente desconocido es una pregunta para el editor o el administrador, no un experimento.
El PID de un registro antiguo ahora pertenece a otro
Los ID de proceso se reciclan, y un número copiado del registro de ayer puede apuntar ahora a algo completamente ajeno. Compare la hora de inicio con la marca temporal del registro antes de sacar cualquier conclusión. Lo mismo se aplica a un nombre corto: dos compilaciones de un mismo producto pueden incluir auxiliares con nombres idénticos y propósitos distintos. La identidad es la tupla, nunca solo el número.
Separe los roles antes de tocar cualquier otra cosa. El cliente de una sola conexión, un auxiliar compartido que sirve a varias aplicaciones y un servidor que acepta sesiones de otras personas parecen todos un proceso en segundo plano en una lista. Solo uno de ellos puede detenerse sin consecuencias que no haya considerado.
Detenga a través del propietario, no a través de la señal
Empiece por el control que posee la cosa: el botón Desconectar de la conexión, el comando de parada admitido del servicio o la propia acción del agente de gestión. Esas rutas ejecutan el desmontaje que el producto espera, que incluye eliminar rutas y cerrar el dispositivo de túnel. Una señal se salta todo eso y deja estado atrás.
Observe qué queda después. Un proceso que permanece residente puede estar esperando la próxima conexión, lo que es una decisión de diseño y no una detención fallida.
Por qué un supervisor reinicia lo que usted mató
Si un demonio de lanzamiento o una política de conexión automática pretende que el túnel esté activo, matar el proceso no expresa nada. El supervisor ve la salida y lo inicia de nuevo, a veces antes de que termine de leer el registro.
Encuentre al supervisor antes de pelear con él. launchctl list muestra los trabajos cargados y sus etiquetas, y un trabajo con un ajuste de mantenimiento activo se reinicia al salir por diseño. La acción correcta allí es cambiar la intención: descargue el trabajo, desactive la política de conexión automática o pídale al administrador que lo haga. Forzar la salida es una herramienta distinta con un significado distinto, y pertenece a un procedimiento de recuperación documentado para un proceso atascado, no a la gestión rutinaria de conexiones.
Registre el evento del ciclo de vida, no la muerte
Anote la identidad del componente, la versión del cliente, el primer evento relevante del ciclo de vida y lo que hizo. El evento importa más que la acción, porque dos instancias que aparecen al iniciar sesión son un problema de orden de arranque que se repetirá. Un registro que nombra el ejecutable y su controlador permite que la siguiente persona lo reproduzca.
Luego verifique el estado previsto: el servicio que el usuario necesitaba y el recurso privado al que llega. Evite la tubería que busca una subcadena y mata a la fuerza cada coincidencia, porque descarta todo lo anterior y suele destruir la evidencia de por qué existían dos instancias. Si el proceso sigue volviendo, el hallazgo es un defecto de configuración u orden, y la corrección corresponde a quien posea el comportamiento de arranque del cliente.