Identifique un asistente de VPN no Mac antes de matar o proceso
Faga coincidir un proceso de VPN co seu executable, o seu controlador e a súa función de rede antes de detelo, e despois use a ruta de parada do propietario en lugar dun sinal.
Trate unha mensaxe sobre un asistente que xa se executa como unha pista do ciclo de vida, non como permiso para comezar a matar procesos. O paso perigoso non é a parada en si, senón a identificación previa, porque nun Mac poden existir varios compoñentes con nomes similares e só un deles posúe a conexión. Constrúa primeiro o rexistro de identidade. Despois decida se parar é sequera a acción correcta.
Constrúa un rexistro de identidade antes de actuar
Catro feitos fan identificable un proceso: o PID actual coa súa hora de inicio, o executable e o produto ao que pertence, o contexto de usuario ou de privilexios baixo o que se executa, e o que sexa que o iniciou. ps -o pid,ppid,user,etime,command -p 1234 dálle os tres primeiros nunha liña, incluído canto tempo leva vivo o proceso. Monitor de Actividade mostra a mesma información cunha cara máis amable. Engada o controlador, é dicir, a aplicación ou o servizo responsable de inicialo e detelo. Con eses catro, un proceso deixa de ser un nome e convértese nun obxecto sobre o que pode razoar.
Se un dos catro é descoñecido, detéñase aí. Un compoñente descoñecido é unha pregunta para o editor ou o administrador, non un experimento.
O PID dun rexistro antigo agora pertence a outro
Os ID de proceso recíclanse, e un número copiado do rexistro de onte pode apuntar agora a algo totalmente alleo. Compare a hora de inicio coa marca temporal do rexistro antes de sacar calquera conclusión. O mesmo se aplica a un nome curto: dúas compilacións dun mesmo produto poden incluír asistentes con nomes idénticos e propósitos distintos. A identidade é a tupla, nunca só o número.
Separe os papeis antes de tocar calquera outra cousa. O cliente dunha soa conexión, un asistente compartido que serve varias aplicacións e un servidor que acepta sesións doutras persoas parecen todos un proceso en segundo plano nunha lista. Só un deles pode deterse sen consecuencias que non considerase.
Detéñase a través do propietario, non a través do sinal
Empece polo control que posúe a cousa: o botón Desconectar da conexión, o comando de parada admitido do servizo ou a propia acción do axente de xestión. Eses camiños executan a desmontaxe que o produto espera, que inclúe eliminar rutas e pechar o dispositivo de túnel. Un sinal salta todo iso e deixa estado atrás.
Observe que queda despois. Un proceso que permanece residente pode estar agardando a próxima conexión, o que é unha decisión de deseño e non unha parada fallida.
Por que un supervisor reinicia o que matou
Se un daemon de lanzamento ou unha política de conexión automática pretende que o túnel estea activo, matar o proceso non expresa nada. O supervisor ve a saída e iníciao de novo, ás veces antes de que remate de ler o rexistro.
Atope o supervisor antes de pelexar con el. launchctl list mostra os traballos cargados e as súas etiquetas, e un traballo cun axuste de mantemento activo reiníciase á saída por deseño. A acción correcta alí é cambiar a intención: descargue o traballo, desactive a política de conexión automática ou pídalle ao administrador que o faga. Forzar a saída é unha ferramenta distinta cun significado distinto, e pertence a un procedemento de recuperación documentado para un proceso atascado, non á xestión rutineira de conexións.
Rexistre o evento do ciclo de vida, non a morte
Anote a identidade do compoñente, a versión do cliente, o primeiro evento relevante do ciclo de vida e o que fixo. O evento importa máis que a acción, porque dúas instancias que aparecen ao iniciar sesión son un problema de orde de arranque que se repetirá. Un rexistro que nomea o executable e o seu controlador permite que a seguinte persoa o reproduza.
Despois verifique o estado previsto: o servizo que o usuario necesitaba e o recurso privado ao que chega. Evite a tubaxe que busca unha subcadea e mata á forza cada coincidencia, porque descarta todo o anterior e adoita destruír a evidencia de por que existían dúas instancias. Se o proceso segue volvendo, o achado é un defecto de configuración ou orde, e a corrección pertence a quen posúa o comportamento de arranque do cliente.