Поруку о помоћнику који већ ради третирајте као траг о животном циклусу, а не као дозволу да почнете да убијате процесе. Опасан корак није само заустављање, него идентификација пре њега, јер на једном Mac рачунару може постојати неколико компоненти сличних имена и само једна од њих поседује везу. Прво саставите запис о идентитету. Затим одлучите да ли је заустављање уопште права радња.

Саставите запис о идентитету пре него што делујете

Четири чињенице чине процес препознатљивим: тренутни PID са временом покретања, извршна датотека и производ којем припада, корисник или контекст привилегија под којим ради, и оно што га је покренуло. ps -o pid,ppid,user,etime,command -p 1234 даје вам прве три у једном реду, укључујући колико процес дуго живи. Надзорник активности приказује исте податке на приступачнији начин. Додајте контролер, то јест апликацију или услугу одговорну за његово покретање и заустављање. Са те четири, процес престаје да буде име и постаје објекат о којем се може размишљати.

Ако је једна од те четири непозната, зауставите се ту. Непозната компонента је питање за издавача или администратора, а не експеримент.

PID у старом запису сада припада неком другом

Идентификатори процеса се рециклирају, а број копиран из јучерашњег записа може сада показивати на нешто потпуно неповезано. Упоредите време покретања са временском ознаком у запису пре него што донесете било какав закључак. Исто важи и за кратко име: две градње једног производа могу испоручити помоћнике с идентичним именима и различитим наменама. Идентитет је торка, никада само број.

Раздвојите улоге пре него што дотакнете било шта друго. Клијент једне везе, заједнички помоћник који служи неколико апликација и сервер који прихвата туђе сесије у списку изгледају као позадински процес. Само се један од њих може зауставити без последица које нисте размотрили.

Зауставите кроз власника, не кроз сигнал

Почните контролом која поседује ствар: дугметом за одспајање везе, подржаном командом услуге за заустављање или сопственом радњом агента за управљање. Ти путеви изводе демонтажу коју производ очекује, укључујући уклањање рута и затварање тунелског уређаја. Сигнал све то прескаче и оставља стање за собом.

Погледајте шта остаје након тога. Процес који остане у меморији можда чека следећу везу, што је дизајнерски избор, а не неуспело заустављање.

Зашто надзорник поново покреће оно што сте убили

Ако покретачки демон или правило аутоматског повезивања жели да тунел буде активан, убијање процеса ништа не изражава. Надзорник види излаз и поново га покреће, понекад пре него што завршите читање записа.

Пронађите надзорника пре него што се с њим сукобите. launchctl list приказује учитане послове и њихове ознаке, а посао с поставком keep-alive поново се покреће при излазу, по дизајну. Исправна радња је променити намеру: истоварите посао, искључите правило аутоматског повезивања или замолите администратора да то учини. Присилно затварање други је алат с другим значењем и припада документованом поступку опоравка заглављеног процеса, а не рутинском управљању везама.

Забележите догађај животног циклуса, а не убијање

Запишите идентитет компоненте, верзију клијента, први релевантни догађај животног циклуса и шта сте учинили. Догађај је важнији од радње, јер две инстанце које се појављују при пријави представљају проблем редоследа покретања који ће се поновити. Запис који именује извршну датотеку и њен контролер омогућује следећој особи да то репродукује.

Затим проверите жељено стање: услугу која је кориснику била потребна и приватни ресурс до којег она досеже. Избегните низ који тражи подниз и присилно убија свако подударање, јер одбацује све горе наведено и обично уништава доказ зашто су постојале две инстанце. Ако се процес стално враћа, налаз је грешка у конфигурацији или редоследу, а исправка припада ономе ко управља понашањем клијента при покретању.

Повезани чланци