ExecStart er ekki skel: að laga VPN-hjálpareiningu
ExecStart keyrir forrit með rökum, ekki skelpípu. Notið skýran túlk eða raunverulegt skriftu, staðfestið svo eininguna og lesið dagbókina.
Afritaðu vinnandi skipanalínu í ExecStart, endurhladdu, og einingin bregst eða hættir hljóðlaust með rökin meðhöndluð sem skráarnöfn. Ekkert er bilað í systemd. ExecStart er listi yfir rök, ekki skel, svo pípur, endurbeining og skilyrði missa merkingu sína um leið og þau yfirgefa flugstöðina þína. Ákveddu hvar skelin á heima, skrifaðu síðan einingu sem segir nákvæmlega hvað eigi að keyra.
Hvers vegna pípan í ExecStart gerir ekkert
Þegar skipun er slegin inn í flugstöð, þáttar skelin hana fyrst. Hún byggir pípu, opnar skrár fyrir endurbeiningu og víkkar breytur áður en nokkurt forrit byrjar. systemd gerir ekkert af þessu: það skiptir ExecStart eftir sínum eigin reglum og keyrir forritið sem verður til með þeim rökum. Þess vegna kemur > sem bókstaflegt rök, og | er afhent forritinu í stað þess að tengja tvö ferli. Einingin hegðar sér ekki rangt; setningafræðin átti við eitthvað annað.
Það er viljandi en ekki kæruleysi, því fyrirsjáanleg meðferð röka er það sem gerir einingar endurskoðanlegar. Það kemur aðeins á óvart þeim sem gera ráð fyrir skel.
Skrifaðu einingu sem segir nákvæmlega hvað keyrir
Byrjaðu á lítilli einingu þar sem tilgangurinn sést í dagbókinni, svo þáttunarvandamál haldist aðskilin frá gönguvandamálum. Þessi tilkynnir aðeins útgáfu tvístæðrar skrár.
[Unit]
Description=Report the installed OpenVPN version
[Service]
Type=oneshot
ExecStart=/usr/sbin/openvpn --version
StandardOutput=journal
StandardError=journalSlóðin er staðgengill, svo skiptu henni út fyrir tvístæðu skrána sem er raunverulega uppsett. Type=oneshot hentar skipun sem keyrir til enda, og dagbókastillingarnar setja úttak hennar þar sem þú getur lesið það án flugstöðvar. Það er viljandi enginn uppsetningarhluti, svo einingin er kölluð með höndunum í stað þess að vera virkjuð við ræsingu. Staðfestu skrána áður en þú ræsir hana, því innsláttarvilla í nafni tilskipunar bregst öðruvísi en villa í slóðinni.
systemd-analyze verify /etc/systemd/system/openvpn-version.service
systemctl start openvpn-version.serviceHaltu skeljarökfræði í skriftu
Þegar hjálpari þarf raunverulega skilyrta rökfræði, setja þá rökfræði í skriftu og kalla á hana beint. Skriftan þarf túlkalínu, keyrsluheimild og útgangskóða sem þjónustan getur tilkynnt. Að ræsa /bin/sh -c með skipun í gæsalöppum virkar, en felur gæsalappareglur inni í einingu og gerir yfirferð erfiðari. Hægt er að prófa nefnda skriftu með höndunum og skipta henni út síðar án þess að breyta einingunni. Treystu ekki á skeljarprófíl gagnvirka notandans, því þjónusta byrjar með eigin umhverfi.
Stilltu WorkingDirectory þegar hlutfallslegar slóðir skipta máli, og sendu umhverfi í gegnum studdar tilskipanir einingarinnar í stað þess að flytja það út í flugstöð. Leyndarmál eiga heima í varðveittum skrám eða skírteinum, ekki í röklistum sem dagbókin getur skráð.
Athugaðu eininguna sem er raunverulega til
Drop-in skrár breyta hegðun án þess að snerta skrána sem þú manst að hafa breytt. Lestu hvað stjórnandinn hlaðdi og hvað síðasta keyrsla tilkynnti.
systemctl cat vpn-helper.service
journalctl -u vpn-helper.service -n 20 --no-pagerÚttak einingarinnar inniheldur drop-in skrár í hleðsluröð, og þaðan kemur óvænt ExecStart yfirleitt. Eftir hverja breytingu skaltu endurhlaða stjórnandann og staðfesta að nýja skilgreiningin sé það sem systemctl cat prentar. Dagbókin sýnir nákvæmu skipanalínuna og útgangsstöðu, sem aðgreinir rökvandamál frá skorti á tvístæðri skrá eða heimildarvillu. Ákveddu svo hvort hjálparinn tilheyrir núverandi VPN-lífsferli eða eigi að vera handvirk greining, því annað bakgrunnsgönguferli býr til samkeppnisaðila.
Eining sem prentar rétta úttakið á beiðni er góður fyrsti áfangi. Hún er ekki enn göng og á ekki að þykjast vera það.