ExecStart ஒரு shell அல்ல: VPN உதவியாளர் அலகைச் சரிசெய்தல்
ExecStart ஒரு நிரலை வாதங்களுடன் இயக்குகிறது, shell குழாய் அல்ல. வெளிப்படையான மொழிபெயர்ப்பான் அல்லது உண்மையான ஸ்கிரிப்டைப் பயன்படுத்தி, பின்னர் அலகைச் சரிபார்த்து இதழைப் படியுங்கள்.
வேலை செய்யும் கட்டளை வரியை ExecStart இல் நகலெடுத்து மீண்டும் ஏற்றுங்கள்; வாதங்கள் கோப்புப் பெயர்களாகக் கருதப்படுவதால் அலகு தோல்வியடைகிறது அல்லது அமைதியாக வெளியேறுகிறது. systemd இல் எதுவும் உடைந்துவிடவில்லை. ExecStart என்பது வாதங்களின் பட்டியல், shell அல்ல, எனவே குழாய்கள், திருப்பிவிடல் மற்றும் நிபந்தனைகள் உங்கள் முனையத்தை விட்டு வெளியேறும் தருணத்திலேயே பொருளை இழக்கின்றன. shell எங்கே இருக்க வேண்டும் என்பதை முடிவு செய்து, பின்னர் என்ன இயக்கப்பட வேண்டும் என்பதைத் துல்லியமாகக் கூறும் அலகை எழுதுங்கள்.
ExecStart இல் உள்ள குழாய் ஏன் எதுவும் செய்யவில்லை
முனையத்தில் ஒரு கட்டளை தட்டச்சு செய்யப்படும்போது shell அதை முதலில் பகுப்பாய்வு செய்கிறது. அது குழாயை உருவாக்கி, திருப்பிவிடலுக்குக் கோப்புகளைத் திறந்து, எந்த நிரலும் தொடங்குவதற்கு முன்பே மாறிகளை விரிவாக்குகிறது. systemd இவற்றில் எதையும் செய்யாது: அது தன் சொந்த விதிகளின்படி ExecStart ஐப் பிரித்து, கிடைக்கும் நிரலை அந்த வாதங்களுடன் இயக்குகிறது. எனவே > நேரடி வாதமாக வந்து சேர்கிறது, மேலும் | இரு செயல்முறைகளை இணைப்பதற்குப் பதிலாக நிரலுக்கு ஒப்படைக்கப்படுகிறது. அலகு தவறாக நடந்துகொள்ளவில்லை; இலக்கணம் வேறு ஒன்றைக் குறித்தது.
இது அலட்சியமல்ல, வேண்டுமென்றே செய்யப்பட்டது, ஏனெனில் வாதங்களின் முன்கணிக்கத்தக்க கையாளுதல் அலகுகளைத் தணிக்கைக்கு உட்படுத்தக்கூடியதாக்குகிறது. shell உள்ளது என்று கருதுபவர்களுக்கு மட்டுமே இது ஆச்சரியம்.
என்ன இயங்குகிறது என்பதைத் துல்லியமாகக் கூறும் அலகை எழுதுங்கள்
இதழில் நோக்கம் தெரியும் சிறிய அலகுடன் தொடங்குங்கள், அதனால் பகுப்பாய்வுச் சிக்கல்கள் சுரங்கச் சிக்கல்களிலிருந்து தனியாக இருக்கும். இது இருமக் கோப்பின் பதிப்பை மட்டும் தெரிவிக்கிறது.
[Unit]
Description=Report the installed OpenVPN version
[Service]
Type=oneshot
ExecStart=/usr/sbin/openvpn --version
StandardOutput=journal
StandardError=journalபாதை ஒரு இடம்காட்டி, எனவே உண்மையில் நிறுவப்பட்ட இருமக் கோப்பை இடுங்கள். Type=oneshot இறுதிவரை இயங்கும் கட்டளைக்குப் பொருத்தமானது, இதழ் அமைப்புகள் அதன் வெளியீட்டை முனையம் இல்லாமல் படிக்கக்கூடிய இடத்தில் வைக்கின்றன. வேண்டுமென்றே நிறுவல் பிரிவு இல்லை, எனவே அலகு துவக்கத்தில் இயக்கப்படுவதற்குப் பதிலாக கையால் அழைக்கப்படுகிறது. தொடங்குவதற்கு முன் கோப்பைச் சரிபாருங்கள், ஏனெனில் உத்தரவின் பெயரில் உள்ள தட்டச்சுப் பிழை பாதையில் உள்ள பிழையிலிருந்து வேறுபட்ட முறையில் தோல்வியடைகிறது.
systemd-analyze verify /etc/systemd/system/openvpn-version.service
systemctl start openvpn-version.serviceshell தர்க்கத்தை ஸ்கிரிப்டில் வைத்திருங்கள்
உதவியாளருக்கு உண்மையிலேயே நிபந்தனைத் தர்க்கம் தேவைப்பட்டால், அந்தத் தர்க்கத்தை ஸ்கிரிப்டில் வைத்து வெளிப்படையாக அழையுங்கள். ஸ்கிரிப்டுக்கு மொழிபெயர்ப்பான் வரி, இயக்க அனுமதி மற்றும் சேவை தெரிவிக்கக்கூடிய வெளியேறும் குறியீடுகள் தேவை. /bin/sh -c ஐ மேற்கோள் கட்டப்பட்ட கட்டளையுடன் இயக்குவது வேலை செய்கிறது, ஆனால் அது மேற்கோள் விதிகளை அலகுக்குள் மறைத்து மதிப்பாய்வைக் கடினமாக்குகிறது. பெயரிடப்பட்ட ஸ்கிரிப்டைக் கையால் சோதித்து, பின்னர் அலகைத் திருத்தாமல் மாற்றலாம். ஊடாடும் பயனரின் shell சுயவிவரத்தை நம்பாதீர்கள், ஏனெனில் சேவை அதன் சொந்த சூழலுடன் தொடங்குகிறது.
சார்புப் பாதைகள் முக்கியமானபோது WorkingDirectory அமைக்கவும், சூழலை முனையத்தில் ஏற்றுமதி செய்வதற்குப் பதிலாக அலகின் ஆதரவு உத்தரவுகள் வழியாக அனுப்புங்கள். ரகசியங்கள் பாதுகாக்கப்பட்ட கோப்புகள் அல்லது சான்றுகளில் இருக்கும், இதழ் பதிவு செய்யக்கூடிய வாதப் பட்டியல்களில் அல்ல.
உண்மையில் இருக்கும் அலகைச் சரிபாருங்கள்
drop-in கோப்புகள் நீங்கள் திருத்தியதாக நினைவிருக்கும் கோப்பைத் தொடாமல் நடத்தையை மாற்றுகின்றன. மேலாளர் எதை ஏற்றியது, கடைசி ஓட்டம் எதைத் தெரிவித்தது என்பதைப் படியுங்கள்.
systemctl cat vpn-helper.service
journalctl -u vpn-helper.service -n 20 --no-pagerஅலகு கொட்டல் ஏற்றும் வரிசையில் drop-in கோப்புகளை உள்ளடக்குகிறது, எதிர்பாராத ExecStart பொதுவாக அங்கிருந்தே வருகிறது. எந்த மாற்றத்திற்கும் பிறகு மேலாளரை மீண்டும் ஏற்றி, புதிய வரையறை systemctl cat அச்சிடுவதே என்பதை உறுதிப்படுத்துங்கள். இதழ் சரியான கட்டளை வரியையும் வெளியேறும் நிலையையும் காட்டுகிறது, இது வாதச் சிக்கலைக் காணாமற்போன இருமக் கோப்பு அல்லது அனுமதிப் பிழையிலிருந்து பிரிக்கிறது. பின்னர் உதவியாளர் தற்போதைய VPN வாழ்க்கைச் சுழற்சியைச் சேர்ந்ததா அல்லது கையால் செய்யும் கண்டறிதலாகவே இருக்க வேண்டுமா என்பதை முடிவு செய்யுங்கள், ஏனெனில் இரண்டாவது பின்னணி சுரங்கச் செயல்முறை போட்டி உரிமையாளரை உருவாக்குகிறது.
கோரிக்கையின் பேரில் சரியான வெளியீட்டை அச்சிடும் அலகு நல்ல முதல் மைல்கல். அது இன்னும் சுரங்கம் அல்ல, சுரங்கம் போல் நடிக்கவும் கூடாது.