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.

Artigos relacionados