Copïwch linell orchymyn sy’n gweithio i ExecStart, ail-lwythwch, ac mae’r uned yn methu neu’n gadael yn dawel gyda’r dadleuon yn cael eu trin fel enwau ffeiliau. Nid oes dim wedi torri yn systemd. Rhestr o ddadleuon yw ExecStart, nid shell, felly mae piblinellau, ailgyfeirio ac amodau yn colli eu hystyr yr eiliad y byddant yn gadael eich terfynell. Penderfynwch ble mae’r shell yn perthyn, yna ysgrifennwch uned sy’n dweud yn union beth ddylai gael ei redeg.

Pam nad yw’r biblinell yn ExecStart yn gwneud dim

Pan deipir gorchymyn mewn terfynell, mae’r shell yn ei ddadansoddi gyntaf. Mae’n adeiladu piblinell, yn agor ffeiliau ar gyfer ailgyfeirio ac yn ehangu newidynnau cyn i unrhyw raglen ddechrau. Nid yw systemd yn gwneud dim o hynny: mae’n rhannu ExecStart yn ôl ei reolau ei hun ac yn rhedeg y rhaglen sy’n deillio o hynny gyda’r dadleuon hynny. Felly mae > yn cyrraedd fel dadl lythrennol, ac mae | yn cael ei roi i’r rhaglen yn lle cysylltu dau broses. Nid yw’r uned yn camymddwyn; roedd y gystrawen yn golygu rhywbeth arall.

Mae hyn yn fwriadol yn hytrach nag yn ddiofal, oherwydd trin dadleuon yn rhagweladwy sy’n gwneud unedau’n archwiladwy. Dim ond y rhai sy’n tybio bod shell yn bresennol sy’n cael eu synnu.

Ysgrifennwch uned sy’n dweud yn union beth sy’n rhedeg

Dechreuwch ag uned fach y mae ei phwrpas i’w weld yn y cyfnodolyn, fel bod problemau dosrannu yn aros ar wahân i broblemau’r twnnel. Dim ond fersiwn deuaidd y mae hon yn ei nodi.

[Unit]
Description=Report the installed OpenVPN version

[Service]
Type=oneshot
ExecStart=/usr/sbin/openvpn --version
StandardOutput=journal
StandardError=journal

Mae’r llwybr yn ddeiliad lle, felly rhoddwch y deuaidd sydd mewn gwirionedd wedi’i osod yn ei le. Type=oneshot yn addas ar gyfer gorchymyn sy’n rhedeg hyd at gwblhau, ac mae gosodiadau’r cyfnodolyn yn rhoi ei allbwn lle y gallwch ei ddarllen heb derfynell. Yn fwriadol nid oes adran osod, felly gelwir yr uned â llaw yn lle ei galluogi wrth gychwyn. Dilyswch y ffeil cyn ei dechrau, oherwydd mae camgymeriad teipio mewn enw cyfarwyddeb yn methu’n wahanol i gamgymeriad yn y llwybr.

systemd-analyze verify /etc/systemd/system/openvpn-version.service
systemctl start openvpn-version.service

Cadwch resymeg shell mewn sgript

Pan fydd cymorthwr wir angen rhesymeg amodol, rhowch y rhesymeg honno mewn sgript a’i galw’n benodol. Mae angen llinell gyfieithydd, caniatâd gweithredu a chodau gadael y gall y gwasanaeth eu nodi ar y sgript. Mae lansio /bin/sh -c gyda gorchymyn mewn dyfynbris yn gweithio, ond mae’n cuddio’r rheolau dyfynnu y tu mewn i uned ac yn gwneud adolygu’n anoddach. Gellir profi sgript a enwir â llaw a’i disodli’n ddiweddarach heb olygu’r uned. Peidiwch â dibynnu ar broffil shell y defnyddiwr rhyngweithiol, oherwydd mae gwasanaeth yn cychwyn gyda’i amgylchedd ei hun.

Gosodwch WorkingDirectory pan fydd llwybrau cymharol yn bwysig, a throsglwyddwch amgylchedd drwy gyfarwyddebau â chymorth yr uned yn lle ei allforio mewn terfynell. Mae cyfrinachau’n perthyn i ffeiliau gwarchodedig neu gymwysterau, nid i restrau dadleuon y gall y cyfnodolyn eu cofnodi.

Gwiriwch yr uned sydd mewn gwirionedd yn bodoli

Mae ffeiliau drop-in yn newid ymddygiad heb gyffwrdd â’r ffeil rydych yn cofio ei golygu. Darllenwch yr hyn a lwythodd y rheolwr a’r hyn a nododd y rhediad olaf.

systemctl cat vpn-helper.service
journalctl -u vpn-helper.service -n 20 --no-pager

Mae dymp yr uned yn cynnwys ffeiliau drop-in yn nhrefn llwytho, a dyna fel arfer o ble y daw ExecStart annisgwyl. Ar ôl unrhyw newid, ail-lwythwch y rheolwr a chadarnhau mai’r diffiniad newydd yw’r hyn y mae systemctl cat yn ei argraffu. Mae’r cyfnodolyn yn dangos yr union linell orchymyn a’r statws gadael, sy’n gwahanu problem dadleuon oddi wrth ddeuaidd coll neu wall caniatâd. Yna penderfynwch a yw’r cymorthwr yn perthyn i gylch bywyd VPN presennol neu a ddylai aros yn ddiagnostig â llaw, oherwydd mae ail broses twnnel yn y cefndir yn creu perchennog cystadleuol.

Mae uned sy’n argraffu’r allbwn cywir ar gais yn garreg filltir gyntaf dda. Nid twnnel ydyw eto, ac ni ddylai esgus bod yn un.

Erthyglau cysylltiedig