nordvpn-ը հայտնում է, որ դեմոնին հասնել չի հաջողվում՝ socket, խումբ թե unit?
Թունելը կարող է լիովին կարգին լինել. CLI-ն պարզապես կորցրել է իր socket-ը դեպի nordvpnd։ Գնացեք հրամանից դեպի unit, ապա՝ socket-ի թույլտվություններ, և կանգ առեք առաջին ձախողման վրա։
nordvpn-ը գործարկելիս անհասանելի դեմոնի մասին հաղորդագրություն ստանալը նեղ բողոք է, որը սովորաբար գալիս է, երբ արդեն ուշացել եք։ Այն ոչինչ չի ասում թունելի աշխատանքի մասին, որովհետև CLI-ն միայն առջևի մասն է՝ այն խոսում է ֆոնային պրոցեսի հետ Unix socket-ի միջոցով, և հաղորդագրությունը նշանակում է, որ այդ զրույցը չի կայացել։ Գնացեք հրամանից դեպի դուրս և կանգ առեք առաջին բանի վրա, որը սուտ է դուրս գալիս։
Սկսեք այնտեղից, որտեղ ի հայտ է գալիս սխալը
Ներգրավված են երկու պրոցես, և հենց դրանք շփոթելն է այս ամենը առեղծվածային դարձնում։ Դեմոնը տիրապետում է թունելին և լսում է /run/nordvpn/-ի տակ գտնվող socket-ի վրա։ Ձեր մուտքագրած հրամանը միանում է այդ socket-ին՝ ինքն ինտերֆեյսներին չդիպչելով։
Երբ socket-ը բացակայում է կամ մերժում է կապը, CLI-ն չունի ումից հարցնել, ուստի հայտնում է նույն բողոքի «օգտատիրոջ դեմոն» կամ «համակարգի դեմոն» տարբերակը։ Այդ տարբերակներից մեկն ուղղակիորեն նշում է ուղին, և դա ամբողջ զրույցի ամենաօգտակար նախադասությունն է։
Նախ ստուգեք unit-ը, հետո՝ մնացածը
Հարցրեք ծառայության կառավարչին՝ արդյոք դեմոնը աշխատում է, և եթե ոչ, մի քայլով գործարկեք ու միացրեք այն՝
systemctl status nordvpnd
sudo systemctl enable --now nordvpnd
nordvpn version
Եթե unit-ը գոյություն ունի, բայց ապաակտիվ է, enable --now-ը միաժամանակ գործարկում է այն և կարգավորում հաջորդ բեռնումը։ Եթե unit-ը չկա, փաթեթն այն չէ, ինչ դուք ենթադրում եք, և տեղադրված անունը ավելի կարևոր է, քան ձեր գրառումների անունը։ Դա հնչում է որպես մանրախնդիր տարբերություն, մինչև որ քսան րոպե չծախսեք մի ծառայություն միացնելու վրա, որը երբեք չի տեղադրվել այդ պիտակով։ Կարդացեք, թե ինչ կա, և գործեք ըստ դրա։
unit-ֆայլերի ցանկը լուծում է դա մեկ հրամանով, և արժե անել նախքան տեղադրման մասին որևէ եզրակացություն անելը՝
systemctl list-unit-files 'nordvpn*'
service --status-all
Թողարկումները ծառայությունը մատակարարել են մեկից ավելի unit-անունով, ուստի nordvpn-ի փոխարեն nordvpnd օգտագործող build-ը կստեղծի այս սխալի կատարյալ պատճենը, մինչ առողջ ծառայությունը աշխատում է հենց կողքին։
Socket-ը և նրա խումբը որոշում են հասանելիությունը
Նույնիսկ աշխատող դեմոնի դեպքում կապը կարող է մերժվել թույլտվությունների պատճառով։ Տեղադրիչը ստեղծում է nordvpn խումբ, և socket-ը պատկանում է համապատասխանաբար, ուստի այդ խմբից դուրս գտնվող օգտատերը մերժվում է, մինչ ծառայությունը լիովին առողջ է։
sudo usermod -aG nordvpn "$USER"
newgrp nordvpn
Խմբի անդամակցությունը կարդացվում է նստաշրջանի մեկնարկին, դրա համար է, որ փոփոխությունը կարծես չի աշխատում այն տերմինալում, որտեղ դուք այն արել եք։ Անհրաժեշտ է նոր մուտքի shell կամ newgrp նախքան աշխատող նստաշրջանը կտեսնի նոր խումբը։ Փորձարկեք նոր shell-ում, ոչ թե այն մեկում, որը հենց նոր կատարեց հրամանը։ Հակառակ դեպքում կեզրակացնեք, որ ուղղումը ձախողվել է, մինչ այն պարզապես դեռ չի կիրառվել։
Ինքնին socket-ի սեփականությունը այդ ստուգման երկրորդ կեսն է։ Համեմատեք socket-ի խումբը CLI-ն աշխատող shell-ում նշված խմբերի հետ, և թույլտվության հարցը պատասխանվում է մեկ քայլով՝ վերատեղադրելու փոխարեն՝
ls -l /run/nordvpn
id
Աշխատող պրոցեսը ճիշտ socket-ի ապացույց չէ։ Այլ կառավարչի կողմից գործարկված դեմոնը կամ այլ անունով socket կապած հին փաթեթը հաղորդում են նույնը։ Գրացուցակի ցանկը տարբերում է այդ դեպքերը մեկ տողում, դրա համար է, որ այն գերազանցում է վերատեղադրմանը։
Օգտատիրոջ պրոցեսը հին փաթեթավորման մեջ
Որոշ փաթեթավորումներ երկրորդ պրոցես են աշխատեցնում մուտք գործած օգտատիրոջ կոնտեքստում, որը սեղանադիր ինտեգրումը սպասում է գտնել։ Եթե համակարգի init-սկրիպտը գործարկում է այն առանց այդ հաշվին անցնելու, CLI-ն փնտրում է դեմոն, որը ոչ մի նստաշրջան չի տիրապետում։
Ոչ systemd init-ի դեպքում փաստագրված դասավորությունը բաժանում է դերերը՝ համակարգի ծառայությունն աշխատում է մեկ անունով, իսկ օգտատիրոջ կողմի պրոցեսը՝ թիրախ հաշվի տակ chpst -u <user>-ով։ Ստուգեք, թե ձեր տեղադրումն իրականում որ դասավորությունն է օգտագործում, նախքան մյուսը ենթադրող մեկնարկային սկրիպտ ավելացնելը։
Ինչպես հասկանալ, որ ավարտել եք
Սովորական առիթը թարմացումն է, քանի որ նոր binary-ն սպասում է ծառայության վիճակ, որը հինը երբեք չի թողել։ Կանգնեցնելը, վերսկսելը և գործարկելը այդ հաջորդականությամբ մաքրում է այն՝
sudo systemctl stop nordvpnd
sudo systemctl enable --now nordvpnd
sudo systemctl start nordvpnd
nordvpn version
Այդ վերջին հրամանը ընդունման թեստն է։ Տպված տարբերակը նշանակում է, որ socket-ը պատասխանում է, ինչը յուրաքանչյուր մնացած խափանում տեղափոխում է մուտք, պլան կամ կապի տիրույթ և դուրս բերում այս հոդվածից։ Եթե այն պատասխանում է, դադարեք կարդալ այստեղ և փոխարենը նայեք հաշիվը։
Եթե socket-ը դեռ բացակայում է, կարդացեք unit-ի մատյանը՝ տեսնելու, թե ինչու այն դադարեց, ապա ստուգեք, որ /run/nordvpn-ը գոյություն ունի և ծառայության հաշիվը կարող է այնտեղ գրել։ Պրոցեսը, որը բարձրանում և անմիջապես մահանում է, իր պատճառը գրանցում է այդ մատյանում, և մեկ տող կարդալն ավելի արագ է, քան վերատեղադրում կատարելը։