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-ը գոյություն ունի և ծառայության հաշիվը կարող է այնտեղ գրել։ Պրոցեսը, որը բարձրանում և անմիջապես մահանում է, իր պատճառը գրանցում է այդ մատյանում, և մեկ տող կարդալն ավելի արագ է, քան վերատեղադրում կատարելը։

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