systemctl చెబుతోంది systemd PID 1 కాదని: మరి ఏమిటి?
PID 1 సందేశం OpenVPN గురించి కాదు, పరిసరాల గురించి. PID 1గా ఏమి నడుస్తుందో తనిఖీ చేయండి, మద్దతు ఉన్న చోట systemd ప్రారంభించి, ఆ తర్వాత అసలు లోపాన్ని చదవండి.
మీరు 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 హోస్ట్లో, లేదా నిర్వాహకుడు లేని చోట క్లయింట్ను ముందు తెరలో నడిపి. ముందు తెరలో నడపడం ప్రొఫైల్ స్వయంగా పనిచేస్తుందని నిర్ధారించడానికి వేగవంతమైన మార్గం కూడా.
మీ నోట్స్లో రెండు పరిసరాలను వేరుగా ఉంచండి: సొరంగాన్ని నడిపే హోస్ట్, మరియు మీరు ఆదేశాలు టైప్ చేసే స్థలం.