Эгер systemctl start openvpn-client@office иштетип, система systemd менен жүктөлбөгөнү тууралуу билдирүү алсаңыз, бул кызматтын иштебей калганындай көрүнөт. Бул такыр кызматтын иштебей калышы эмес: сиз чакырган systemctl сүйлөшүү үчүн иштеп турган менеджерди таба албайт, ошондуктан OpenVPN тууралуу эч нерсе текшерилген эмес. sudo менеджер жаратпайт, unit файлын орнотуу да аны жаратпайт. Буйрук менен машина эки башка дүйнөдөн келет, жана ката — бул байкалган жалгыз жер.

Буйрук аткарылып жаткан жерде PID 1 кимге таандык экенин сурап баштаңыз, анткени бул жооп unit-тердин бар же жок экенин чечет.

Ката OpenVPNди эмес, чөйрөнү атайт

systemctl — кардар, менеджер эмес. Ал системалык менеджерге socket аркылуу туташат, ал эми экинчи тарапта менеджер болбосо, адамдар форумдарга чаптаган билдирүүнү чыгарат. ps -p 1 -o pid=,comm= чынында PID 1 катары эмне иштеп жатканын көрсөтөт, жана жооп көбүнчө shell, init кабык же контейнердин өзүнүн кирүү чекити болот. Мындай учурда unit файлы толугу менен жарактуу болуп, бирок эч качан окулбашы мүмкүн. Буйрукту root катары кайталоо кардардын эсептик маалыматтарын гана өзгөртөт.

Биринчи саптан мурун бүт билдирүүнү окуңуз. Менеджердин өзүнөн келген ката, мисалы жок unit же аткарылбаган шарт, ага жеткениңизди билдирет; бул ката жетпегениңизди билдирет.

WSL: systemd күйгүзүү — конфигурацияны өзгөртүү

WSL кийинки чыгарылыштарда systemd колдоосун алды, бирок бул функция ар бир дистрибутив үчүн өзүнчө күйгүзүлөт жана орнотулган WSL версиясы аны колдогон жерде гана иштейт. wsl --version Windows тарабында эмнеңиз бар экенин көрсөтөт, ал эми дистрибутивдин /etc/wsl.conf файлында [boot] бөлүмү бар, анда systemd=true жазылат. Бар бөлүмдөрдү жок кылбай ошол файлды түзөтүңүз, анан өзгөртүү күчүнө кириши үчүн WSL нускасын кайра иштетиңиз. wsl --shutdown иштеп жаткан бардык дистрибутивдерди токтотот, ошондуктан адегенде ишиңизди сактаңыз.

Кайра ачкандан кийин, OpenVPN unitине тийүүдөн мурун менеджерди тастыктаңыз: ps -p 1 -o comm= көрсөтүшү керек systemd деп. systemd күйгүзүү профиль, эсептик маалымат же нусканын атын бербейт, ошондуктан кийинки ката PID 1 эмес, алардын бири тууралуу болот.

Контейнерлер unit-терди эмес, өз кирүү чекитин иштетет

Кадимки контейнер өзүнүн кирүү чекити же буйругу аныктаган нерсени иштетет жана кандай пакеттерди орнотсоңуз да, ал systemd менен жүктөлгөн машина эмес. Имиджге systemctl кошуу сизге туташа турган эч нерсеси жок кардар берет. Community OpenVPN үчүн колдоого алынган үлгү адатта алдыңкы планда иштеген процесс, openvpn --config /path/to/client.conf, аны кирүү чекити иштетет жана сырттан көзөмөлдөйт. Ошол ээси иштетүүнү, сигналдарды жана өчүрүүнү башкарат, жана туннелди башкарган жалгыз нерсе ошол болушу керек.

Ошол туннелди мурунтан башкарып жаткан кирүү чекитинин жанында интерактивдүү көчүрмөнү эч качан иштетпеңиз, анткени эки процесс түзмөк жана маршруттар үчүн талашат. Контейнердин ичиндеги эң аз init процесс балдарды жыйнайт жана сигналдарды өткөрүп берет; ал имиджды unit-тери бар хостко айландырбайт.

Эгер жайгаштыруу чын эле контейнердин ичинде systemd талап кылса, ага ушул үчүн атайын долбоорлонгон имидж керек, systemctl нааразы болууну токтотконго чейин кошулган кошумча артыкчылыктар эмес.

Менеджер пайда болгондон кийин кийинки катаны окуңуз

Чыныгы менеджер кызматты иштеткенден кийин пайдалуу каталар башталат. Түзмөктүн уруксатынын иштебей калышы, конфигурацияны талдоо катасы, жок эсептик маалымат жана жетүү мүмкүн болбогон өнөктөш — булар PID 1 билдирүүсү эч качан текшербеген төрт башка маселе. Аларды unit чыгарган тартипте окуңуз, пайдаланып journalctl -u openvpn-client@office -n 50 systemd хостунда, же менеджер жок жерде кардарды алдыңкы планда иштетүү менен. Алдыңкы планда иштетүү — профилдин өзү иштеп жатканын тастыктоонун эң тез жолу да.

Жазмаларыңызда эки чөйрөнү өзүнчө кармаңыз: туннелди иштеткен хост жана буйруктарды терип жаткан жер.

Тектеш макалалар