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 ક્લાઇન્ટ છે, મેનેજર નહીં. તે સોકેટ દ્વારા સિસ્ટમ મેનેજર સાથે જોડાય છે, અને બીજા છેડે મેનેજર ન હોય ત્યારે લોકો ફોરમમાં પેસ્ટ કરતો સંદેશ છાપે છે. 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 હોસ્ટ પર, અથવા જ્યાં મેનેજર નથી ત્યાં ક્લાઇન્ટને અગ્રભાગમાં ચલાવીને. અગ્રભાગમાં ચલાવવું એ પ્રોફાઇલ પોતે કામ કરે છે તેની ખાતરી કરવાનો સૌથી ઝડપી રસ્તો પણ છે.
તમારી નોંધમાં બંને પર્યાવરણ અલગ રાખો: ટનલ ચલાવતું હોસ્ટ, અને જ્યાં તમે આદેશ ટાઇપ કરો છો તે જગ્યા.