Bhí an tollán ag obair inné, agus ar maidin tá an unit marbh le Failed at step EXEC spawning /usr/local/bin/vpnclient sa journal. Ní thagann na dintiúirí, na bealaí ná an cuntas isteach sa abairt sin riamh. Réitigh systemd ExecStart go cosán, d’iarr ar an eithne é a fhorghníomhú, agus dhiúltaigh an eithne, go minic toisc nach bhfuil aon rud sa chosán sin nó toisc nach bhfuil an comhad inrite. Caith leis an bhfault mar fhadhb comhaid agus argv go dtí go gcruthóidh an t-ordú parsáilte a mhalairt.

Cén fáth a dteipeann EXEC sula dtosaíonn an fhíordheimhniú

Ní ritheann systemd ExecStart trí shell. Déanann sé fork, tógann veicteoir argóintí ón líne agus glaonn execve ar an gcéad eilimint. Má theipeann ar an nglao sin, ní shroicheann an tseirbhís cóid féin an chliaint VPN riamh, mar sin ní féidir le haon eagarthóireacht próifíle ná seiceáil dintiúirí cabhrú.

Dealaíonn an cód stádais an teaghlach seo ó ghnáth-thimpistí. Níor thosaigh unit a fhágann le status=203/EXEC próiseas riamh; b’fhéidir gur theip ar unit a thosaíonn agus a fhágann ansin le status=1 ag an bhfíordheimhniú, ag DNS nó ag an ródú. Léigh an cód sula léann tú logáil an chliaint, mar sa chéad chás beidh logáil an chliaint folamh.

Is é an cosán sa journal an ceann a d’úsáid systemd, ní gá gurb é an ceann a chuir tú in eagar. Is féidir le comhaid drop-in agus le haschur an ghineadóra an comhad soláthraí a shárú, agus fágann daemon-reload stale an seanlíne sa chuimhne. Sin an fáth gurb é an chéad diagnóis ná fiafraí de systemd cad a mheasann sé atá san ordú, seach an comhad a mheabhraíonn tú a athrú a oscailt.

Trí áit a bhfuil cosán an dénártha scríofa

Is féidir le cliant VPN a suiteáladh ó phacáiste dáileacháin, ó script soláthraí agus ó tharball eisiúna teacht i dtrí réimír éagsúla. Thaifead an unit, an riail phribhléide agus an suiteálaí ceann amháin de na réimírí sin an duine, agus tagann an teip chun solais nuair nach n-aontaíonn dhá cheann de na trí.

RecordCommon valueHow to read it
Unit or drop-in/usr/local/bin/vpnclientsystemctl cat vpnclient.service
Installed binary/usr/bin/vpnclientcommand -v vpnclient, then ls -l the result
Sudoers grant/opt/vpnclient/bin/vpnclientsudo grep -r vpnclient /etc/sudoers.d/

Tá éagsúlacht nithiúil le feiceáil mar seo: suiteálann script an tsoláthraí go /usr/local/bin, díphacáladh an tarball faoi /opt, agus luann an unit fós an seanchoscán /usr/bin ó phacáiste roimhe seo. Níl ach ceann amháin de na comhaid sin ann, agus is annamh gurb é an ceann in ExecStart é.

Socraigh cé acu cosán atá canónach sula n-athraíonn tú ceachtar den dá chomhad. Más leis an bpacáiste dáileacháin an dénártha, is é cosán an phacáiste an ceann canónach agus ba cheart don unit é a leanúint. Más leis an script soláthraí é, tá an riail chéanna i bhfeidhm maidir le réimír an tsoláthraí. Cruthaíonn cóipeáil dénártha idir réimírí dhá chóip a scarann ó chéile ag an gcéad uasghrádú eile.

Nuair a iompaíonn ordú idir lúibíní ina ainm comhaid

Tá an dara mód teipe i bhfolach taobh thiar den líne chéanna sa journal. Scríobhann duine é seo san unit agus bíonn súil aige go nascfaidh an cliant le linn an tosaithe:

ExecStart=/usr/bin/"vpnclient connect office"

Scoilteann systemd an luach ina fhocail, mar sin is é an chéad fhocal /usr/bin/vpnclient connect office, agus baintear na lúibíní mar chomhréir ghrúpála. Ansin lorgaíonn an eithne comhad a bhfuil spásanna ina ainm, agus níl a leithéid ann. Tá an earráid mar an gcéanna le dénártha atá ar iarraidh, cé go bhfuil an dénártha suiteáilte.

Is é an fhoirm thacaithe ná fíorfhorghníomhaitheoir a leanann argóintí ar leith, mar shampla ExecStart=/usr/bin/vpnclient connect office. Má theastaíonn píopa nó slabhra ón sreabhadh oibre i ndáiríre, cuir i script é agus glaoigh ar an script, mar níl && ag ExecStart, níl píopaí aige agus níl leathnú glob aige.

Deisigh an unit, ní an córas comhad

Is é an deisiú cathaitheach ná nasc siombalach ón gcosán a bhfuiltear ag súil leis go dtí an fíordhénártha. Oibríonn sé go dtí go nuashonraítear an pacáiste agus go bpointeálann an nasc chuig comhad a baineadh, nó go dtí nach n-oireann lipéad SELinux don sprioc a thuilleadh. B’fhearr an unit a chur in eagar trí drop-in ionas go bhfanann comhad an tsoláthraí slán agus na huasghráduithe intuartha.

Caithfidh an riail phribhléide a bheith ag teacht leis an gcosán céanna agus leis na fo-orduithe céanna. Ní údaraíonn iontráil sudoers do /usr/local/bin/vpnclient /usr/bin/vpnclient, agus ligeann iontráil a cheadaíonn gach argóint d’aon phróiseas logánta an tollán a athchumrú nó a stopadh. Tabhair an dá bhriathar a theastaíonn ón unit agus coinnigh an dífhoirgníocht amuigh as más rud é go ndúnann stopadh na seirbhíse an comhéadan cheana féin.

Seo an áit a n-íocann an chomparáid: ba cheart go luafadh an unit, bunachar sonraí na bpacáistí agus sudoers cosán amháin. Nuair a dhéanann siad amhlaidh, imíonn an earráid EXEC gan atosú agus gan cóip den dénártha in áit a trí.

Cruthaigh an t-ordú parsáilte roimh an atosú

sudo systemctl daemon-reload
sudo systemctl cat vpnclient.service
systemctl show -p ExecStart vpnclient.service
systemd-analyze verify /etc/systemd/system/vpnclient.service
sudo systemctl restart vpnclient.service
systemctl status vpnclient.service --no-pager

Is é systemctl show an t-aschur cinntitheach mar go gclóíonn sé an argv a pharsáil systemd i ndáiríre, lena n-áirítear aon drop-in. Gabhann systemd-analyze verify cosán atá ar iarraidh nó neamh-inrite sula n-atosóidh tú, agus insíonn an t-ordú stádais tar éis an atosaithe duit an bhfuil an próiseas ann anois.

Má thosaíonn an unit agus má theipeann uirthi ansin, d’fhág tú teaghlach EXEC agus chuaigh tú isteach i láimhseáil earráidí an chliaint féin. Féach sa journal ar theachtaireacht an chliaint, ní ar theip execve eile. Coinnigh diff an unit agus diff sudoers le chéile i dtaifead an athraithe, ionas nach dtabharfaidh an chéad uasghrádú eile an cosán roinnte ar ais go ciúin.

Ailt ghaolmhara