API վերջնակետ արտահանող VPN կեռիկը փոխում է իր սկսած պրոցեսների միջավայրը, ոչ այն տերմինալի միջավայրը, որն արդեն բաց էր, երբ թունելը բարձրացավ։ Այդ մեկ տարբերությունը բացատրում է «գործիքը դեռ կանչում է հանրային վերջնակետը» հաղորդումների մեծ մասը։ Կարգավորումը տեղադրելու երկու աշխատունակ տեղ կա, և ընտրությունը կախված է նրանից, թե ով է այն սպառում և որքան հաճախ է այն փոխվում։ Համեմատեք դրանք նախքան ևս մեկ մեկնարկային սկրիպտ ավելացնելը։

Երկու տեղ, որտեղ կարգավորումը կարող է ապրել

Առաջին տարբերակը նախածանցն է հենց հրամանի վրա՝ արժեքը գոյություն ունի միայն այդ մեկ կանչի համար և անհետանում է դրա հետ։ Երկրորդ տարբերակը արտահանումն է միացման կեռիկի ներսում, որը հասնում է յուրաքանչյուր պրոցեսի, որ կեռիկը սկսում է այդ կետից հետո։ Դրանք տարբերվում են ընդգրկմամբ և կյանքի տևողությամբ, ոչ շարահյուսությամբ, և այդ տարբերությունը որոշում է ձախողումների մեծ մասը։

PropertyPrefix on the commandExport from the hook
Who receives itThat invocation onlyChildren the hook starts
LifetimeUntil the process exitsUntil the hook's own session ends
LeakageScoped to one commandApplies to later commands in that session
Repeat costEvery invocationOnce per connection
Works for an open editorNo, unless the editor is started with itNo

Աղյուսակը կեռիկին էժան տեսք է տալիս և թաքցնում իրական հաշիվը՝ այն մասնավոր վերջնակետ է ընտրում նաև այն հրամանների համար, որոնք որևէ կապ չունեն առաջադրանքի հետ։ Կարդացեք յուրաքանչյուր տողը որպես սահմանափակում, ոչ որպես նախընտրություն։ Եթե վերջնակետը փոխվում է առաջադրանքից առաջադրանք, նախածանցը հաղթում է ճշգրտությամբ, թեկուզ արժենա մեկ ստեղնահարում։

Ինչու կեռիկը չի կարող հասնել արդեն բաց կեղևին

Միջավայրի փոփոխականները պրոցեսին տրվում են պրոցեսի պատկերը ստեղծելիս։ Միացումից առաջ սկսված կեղևը պահում է ստացած պատճենը, և կեռիկի ներսում կատարված արտահանումը հեռարձակում չէ մեքենայի յուրաքանչյուր պրոցեսին։ Այն ժառանգում են միայն կեռիկի սեփական զավակները։ Կեղևի սեփական զավակները վերցնում են այն, ինչ կեղևն ունի իրենց մեկնարկի պահին, և դրա համար է, որ նույն հրամանը կարող է աշխատել մի տերմինալում և ձախողվել մյուսում։

Նույնը վերաբերում է գրաֆիկական խմբագրիչին։ Նրա ընդլայնումների հոսթը, ներկառուցված տերմինալը և ֆոնային լեզվի սերվերը ճյուղավորվել են մեկնարկի ժամանակ և պահում են իրենց պատճենները։ Թղթապանակը նորից բացելը պարտադիր չէ, որ վերագործարկի այդ զավակներին, ուստի ավելացված կարգավորումը դեռ այդպես էլ չի հասնում։

Ամենաէժան փորձարկումը փոփոխականը տպելն է այն տեղից, որտեղ ձախողվում է, ոչ այն կեղևից, որն աշխատում է։ Եթե ձախողվող պրոցեսը սկսվել է թունելից առաջ, արտահանումը ոչ մի հնարավորություն չի ունեցել։

Հրամանից հրաման ձևը՝ գրված

Նախածանցը ընտրությունը տեսանելի է պահում այն հրամանում, որն օգտագործում է այն, ինչը օգնում է, երբ վերջնակետը փոխվում է առաջադրանքների միջև

env INTERNAL_API='https://internal-api.example.net:8443' my-work-tool

Հրամանը միայն օրինակ է՝ my-work-tool տեղապահ է, և INTERNAL_API VPN ստանդարտ չէ, ուստի փոխարինեք այն ձեր իրականում գործարկվող ծրագրի փաստաթղթավորված կարգավորմամբ և ձեր սեփական հաստատված հոսթով։ Մի՛ դրեք նշան կամ գաղտնաբառ նույն տողում, որովհետև այն հայտնվում է կեղևի պատմության մեջ։

Երբ մի քանի հրաման պատկանում է մեկ առաջադրանքի, կարճ ստուգված փաթաթող սկրիպտը սահմանում է փոփոխականները, ապա գործարկում դրանք։ Այդպես պահպանվում է մեկ սահմանում՝ առանց արժեքը տերմինալի բոլոր ապագա հրամանների համար գլոբալ դարձնելու։

Վերբեռնեք, վերագործարկեք կամ թողեք այդպես

Արդեն աշխատող գործիքի համար նախընտրեք նրա սեփական վերբեռնումը կամ աշխատանքային տարածքի պրոֆիլը, եթե ունի։ Հակառակ դեպքում պահեք աշխատանքը և վերագործարկեք կարգավորումը կարդացող բաղադրիչը, որը հաճախ լեզվի սերվեր է, ոչ խմբագրիչի պատուհանը։ Պատուհանը վերագործարկելը և ենթադրելը, որ զավակ պրոցեսները հետևել են դրան, հենց այն է, ինչի պատճառով վերբեռնումը թվում է, թե չի աշխատում։

Անջատումը առանձին որոշում է։ Դադարեցնելը, փակելը կամ վերամիանալը պատկանում է հավելվածին, և վերջնակետի փոփոխականը դա չի կառավարում։ Վերաբերվեք փոփոխականին որպես հասցե ընտրող կոնֆիգուրացիա, ոչ որպես կանոն այն մասին, թե հետո որ ցանցային երթևեկությունն է թույլատրվում, և երկու հարցերը մնում են անջատելի։

Առնչվող հոդվածներ