Uzskatiet ziņojumu par jau darbojošos palīgu kā dzīves cikla pavedienu, nevis kā atļauju sākt nogalināt procesus. Bīstamais solis nav pati apturēšana, bet gan identifikācija pirms tās, jo vienā Mac var būt vairākas līdzīgi nosauktas komponentes un tikai viena no tām pārvalda savienojumu. Vispirms izveidojiet identitātes ierakstu. Pēc tam izlemiet, vai apturēšana vispār ir pareizā darbība.

Izveidojiet identitātes ierakstu pirms rīkošanās

Četri fakti padara procesu identificējamu: pašreizējais PID ar tā sākuma laiku, izpildāmais fails un produkts, kuram tas pieder, lietotāja vai privilēģiju konteksts, kurā tas darbojas, un viss, kas to palaida. ps -o pid,ppid,user,etime,command -p 1234 sniedz pirmos trīs vienā rindā, tostarp cik ilgi process ir dzīvs. Activity Monitor parāda to pašu informāciju ar draudzīgāku seju. Pievienojiet kontrolieri, proti, lietojumprogrammu vai pakalpojumu, kas atbild par tā palaišanu un apturēšanu. Ar šiem četriem process pārstāj būt vārds un kļūst par objektu, par ko varat domāt.

Ja kāds no četriem nav zināms, apstājieties tur. Nezināma komponente ir jautājums izdevējam vai administratoram, nevis eksperiments.

PID vecā žurnālā tagad pieder kādam citam

Procesu ID tiek pārstrādāti, un numurs, kas nokopēts no vakardienas žurnāla, tagad var norādīt uz kaut ko pilnīgi nesaistītu. Pirms izdarāt jebkādu secinājumu, salīdziniet sākuma laiku ar žurnāla laika zīmogu. Tas pats attiecas uz īsu nosaukumu: divas viena produkta versijas var piegādāt palīgus ar identiskiem nosaukumiem un atšķirīgiem mērķiem. Identitāte ir korteža, nekad tikai numurs.

Atdaliet lomas pirms kaut kā cita aiztikšanas. Viena savienojuma klients, koplietots palīgs, kas apkalpo vairākas lietojumprogrammas, un serveris, kas pieņem citu cilvēku sesijas, sarakstā visi izskatās kā fona process. Tikai vienu no tiem var apturēt bez sekām, kuras neesat apsvēris.

Apturiet caur īpašnieku, nevis caur signālu

Sāciet ar vadīklu, kas pārvalda lietu: savienojuma pogu Atvienot, pakalpojuma atbalstīto apturēšanas komandu vai paša pārvaldības aģenta darbību. Šie ceļi veic produkta gaidīto demontāžu, tostarp maršrutu noņemšanu un tuneļa ierīces aizvēršanu. Signāls to visu izlaiž un atstāj stāvokli aiz sevis.

Vērojiet, kas paliek pēc tam. Atmiņā palicis process, iespējams, gaida nākamo savienojumu, un tā ir dizaina izvēle, nevis neizdevusies apturēšana.

Kāpēc uzraugs restartē to, ko nogalinājāt

Ja palaišanas dēmons vai automātiskā savienojuma politika paredz, ka tunelim jābūt ieslēgtam, procesa nogalināšana neko neizsaka. Uzraugs redz izeju un sāk to no jauna, dažkārt pirms esat pabeidzis lasīt žurnālu.

Atrodiet uzraugu pirms cīņas ar to. launchctl list parāda ielādētos darbus un to etiķetes, un darbs ar dzīvības uzturēšanas iestatījumu pēc dizaina restartējas pie izejas. Pareizā darbība tur ir mainīt nodomu: izkraut darbu, izslēgt automātiskā savienojuma politiku vai lūgt administratoru to izdarīt. Piespiedu aizvēršana ir cits instruments ar citu nozīmi, un tas pieder dokumentētai iesprūduša procesa atkopšanas procedūrai, nevis ikdienas savienojumu pārvaldībai.

Reģistrējiet dzīves cikla notikumu, nevis nogalināšanu

Pierakstiet komponentes identitāti, klienta versiju, pirmo būtisko dzīves cikla notikumu un to, ko darījāt. Notikums ir svarīgāks par darbību, jo divi eksemplāri, kas parādās pieteikšanās laikā, ir palaišanas kārtības problēma, kas atkārtosies. Ieraksts, kas nosauc izpildāmo failu un tā kontrolieri, ļauj nākamajam cilvēkam to reproducēt.

Pēc tam pārbaudiet paredzēto stāvokli: pakalpojumu, kas lietotājam bija vajadzīgs, un privāto resursu, ko tas sasniedz. Izvairieties no plūsmas, kas grep meklē apakšvirkni un ar varu nogalina katru atbilstību, jo tā izmet visu iepriekš minēto un parasti iznīcina pierādījumu tam, kāpēc pastāvēja divi eksemplāri. Ja process turpina atgriezties, atradums ir konfigurācijas vai kārtības defekts, un labojums pieder tam, kurš pārvalda klienta palaišanas uzvedību.

Saistītie raksti