Kopiatu funtzionatzen duen komando-lerro bat ExecStart-era, birkargatu, eta unitateak huts egiten du edo isilik irteten du, argumentuak fitxategi-izen gisa hartuta. Ez dago ezer hautsita systemd-n. ExecStart argumentuen zerrenda da, ez shell bat, beraz hodiak, birbideratzea eta baldintzak zentzua galtzen dute zure terminaletik ateratzen diren unean. Erabaki shell-a non dagokion, eta gero idatzi zehazki zer exekutatu behar den dioen unitate bat.

Zergatik ez duen ezer egiten ExecStart-eko hodiak

Komando bat terminalean idazten denean, shell-ak lehenengo analizatzen du. Hodi bat eraikitzen du, fitxategiak irekitzen ditu birbideratzeko eta aldagaiak hedatu, edozein programa hasi aurretik. systemd-k horietako ezer ez du egiten: ExecStart bere arauen arabera zatitzen du eta lortutako programa argumentu horiekin exekutatzen du. Horregatik > argumentu literal gisa iristen da, eta | programari ematen zaio bi prozesu konektatu beharrean. Unitatea ez da gaizki portatzen; sintasiak beste zerbait esan nahi zuen.

Hori nahita egina dago, ez axolagabekeriaz, argumentuen tratamendu aurreikusteko modukoa delako unitateak auditagarri egiten dituena. Shell bat dagoela suposatzen dutenak baino ez ditu harritzen.

Idatzi zehazki zer exekutatzen den dioen unitate bat

Hasi unitate txiki batekin, zeinaren helburua egunkarian ikusgai dagoen, analisi-arazoak tunel-arazoetatik bereizita gera daitezen. Honek binario baten bertsioa baino ez du jakinarazten.

[Unit]
Description=Report the installed OpenVPN version

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

Bidea leku-marka bat da, beraz ordezkatu benetan instalatuta dagoen binarioarekin. Type=oneshot amaierara arte exekutatzen den komando baterako egokia da, eta egunkariaren ezarpenek haren irteera terminalik gabe irakur dezakezun tokian jartzen dute. Nahita ez dago instalazio atalik, beraz unitatea eskuz deitzen da, abioan gaitu beharrean. Balidatu fitxategia hasi aurretik, zuzentarau baten izeneko akats tipografikoak bideko akatsak ez bezala huts egiten duelako.

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

Eduki shell logika script batean

Laguntzaile batek benetan logika baldintzatuak behar dituenean, jarri logika hori script batean eta deitu esplizituki. Script-ak interprete lerro bat, exekuzio baimena eta zerbitzuak jakinaraz ditzakeen irteera-kodeak behar ditu. /bin/sh -c komando aipatu batekin abiarazteak badihardu, baina aipamen-arauak unitate baten barruan ezkutatzen ditu eta berrikuspena zailtzen du. Izena duen script bat eskuz proba daiteke eta gero ordeztu unitatea editatu gabe. Ez fidatu erabiltzaile interaktiboaren shell profilean, zerbitzu bat bere ingurunearekin abiatzen delako.

Ezarri WorkingDirectory bide erlatiboek garrantzia dutenean, eta pasa ingurunea unitatearen onartutako zuzentarauekin, terminalean esportatu beharrean. Sekretuak fitxategi babestuetan edo kredentzialetan daude, egunkariak erregistra ditzakeen argumentu-zerrendetan eta ez.

Egiaztatu benetan existitzen den unitatea

Drop-in fitxategiek portaera aldatzen dute editatu duzula uste duzun fitxategia ukitu gabe. Irakurri kudeatzaileak zer kargatu duen eta azken exekuzioak zer jakinarazi duen.

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

Unitatearen isurketak drop-in fitxategiak kargatzeko ordenan sartzen ditu, eta hortik etorri ohi da ustekabeko ExecStart bat. Edozein aldaketaren ondoren, birkargatu kudeatzailea eta egiaztatu definizio berria dela honek inprimatzen duena: systemctl cat. Egunkariak komando-lerro zehatza eta irteera-egoera erakusten ditu, eta horrek argumentu-arazoa binario falta edo baimen-errore batetik bereizten du. Gero erabaki laguntzailea lehendik dagoen VPN bizi-zikloari dagokion edo eskuzko diagnostiko gisa geratu behar duen, atzeko planoko bigarren tunel prozesu batek jabe lehiakide bat sortzen baitu.

Eskariaren arabera irteera zuzena inprimatzen duen unitatea lehen mugarri ona da. Oraindik ez da tunel bat, eta ez luke hala izatearen plantak egin behar.

Erlazionatutako artikuluak