Tracteu un missatge sobre un auxiliar que ja s'executa com una pista del cicle de vida, no com un permís per començar a matar processos. El pas perillós no és l'aturada en si, sinó la identificació prèvia, perquè en un Mac poden existir diversos components amb noms semblants i només un d'ells posseeix la connexió. Construïu primer el registre d'identitat. Després decidiu si aturar-lo és l'acció correcta.

Construïu un registre d'identitat abans d'actuar

Quatre fets fan identificable un procés: el PID actual amb la seva hora d'inici, l'executable i el producte al qual pertany, el context d'usuari o de privilegis sota el qual s'executa, i qualsevol cosa que l'hagi iniciat. ps -o pid,ppid,user,etime,command -p 1234 us en dona els tres primers en una línia, incloent-hi quant de temps fa que el procés és viu. Activity Monitor mostra la mateixa informació amb una cara més amable. Afegiu el controlador, és a dir, l'aplicació o el servei responsable d'iniciar-lo i aturar-lo. Amb aquests quatre, un procés deixa de ser un nom i es converteix en un objecte sobre el qual podeu raonar.

Si un dels quatre és desconegut, atureu-vos aquí. Un component desconegut és una pregunta per a l'editor o l'administrador, no un experiment.

El PID d'un registre antic ara pertany a algú altre

Els identificadors de procés es reciclen, i un número copiat del registre d'ahir pot ara apuntar a una cosa totalment no relacionada. Compareu l'hora d'inici amb la marca de temps del registre abans de treure cap conclusió. El mateix s'aplica a un nom curt: dues compilacions d'un producte poden incloure auxiliars amb noms idèntics i propòsits diferents. La identitat és la tupla, mai només el número.

Separeu els rols abans de tocar res més. El client d'una sola connexió, un auxiliar compartit que serveix diverses aplicacions i un servidor que accepta sessions d'altres persones semblen tots un procés en segon pla en una llista. Només un d'ells es pot aturar sense conseqüències que no hàgiu considerat.

Atureu a través del propietari, no a través del senyal

Començeu pel control que posseeix la cosa: el botó Desconnecta de la connexió, l'ordre d'aturada compatible del servei o l'acció pròpia de l'agent de gestió. Aquests camins executen el desmuntatge que el producte espera, que inclou eliminar rutes i tancar el dispositiu de túnel. Un senyal ho omet tot i deixa estat enrere.

Observeu què queda després. Un procés que roman resident pot estar esperant la propera connexió, cosa que és una decisió de disseny i no una aturada fallida.

Per què un supervisor reinicia el que heu matat

Si un dimoni de llançament o una política de connexió automàtica vol que el túnel estigui actiu, matar el procés no expressa res. El supervisor veu la sortida i el torna a iniciar, de vegades abans que acabeu de llegir el registre.

Trobeu el supervisor abans de lluitar-hi. launchctl list mostra les tasques carregades i les seves etiquetes, i una tasca amb un paràmetre de manteniment actiu es reinicia en sortir per disseny. L'acció correcta allà és canviar la intenció: descarregueu la tasca, desactiveu la política de connexió automàtica o demaneu a l'administrador que ho faci. Forçar la sortida és una eina diferent amb un significat diferent, i pertany a un procediment de recuperació documentat per a un procés encallat, no a la gestió rutinària de connexions.

Registreu l'esdeveniment del cicle de vida, no la mort

Anoteu la identitat del component, la versió del client, el primer esdeveniment rellevant del cicle de vida i què heu fet. L'esdeveniment importa més que l'acció, perquè dues instàncies que apareixen en iniciar sessió són un problema d'ordre d'arrencada que es repetirà. Un registre que anomena l'executable i el seu controlador permet que la propera persona ho reprodueixi.

Després verifiqueu l'estat previst: el servei que l'usuari necessitava i el recurs privat al qual arriba. Eviteu la canonada que cerca una subcadena i mata a la força cada coincidència, perquè descarta tot l'anterior i normalment destrueix l'evidència de per què existien dues instàncies. Si el procés torna una i altra vegada, la troballa és un defecte de configuració o d'ordenació, i la correcció pertany a qui posseeix el comportament d'arrencada del client.

Articles relacionats