A 'ruith Bash gu mionaideach

Ma lorg thu an duilleag seo ann an rannsachadh, is dòcha gu bheil thu a’ feuchainn ri fuasgladh fhaighinn air duilgheadas air choireigin le ruith bash.

Is dòcha nach eil an àrainneachd bash agad a’ suidheachadh caochladair àrainneachd agus nach eil thu a’ tuigsinn carson. Is dòcha gu bheil thu air rudeigin a chuir an sàs ann an grunn fhaidhlichean no pròifilean bash boot no a h-uile faidhle air thuaiream gus an obraich e.

Ann an suidheachadh sam bith, is e puing an nota seo an dòigh-obrach airson bash a thòiseachadh cho sìmplidh ‘s a ghabhas gus an urrainn dhut dèiligeadh ri duilgheadasan.

Diagram

Tha an clàr-sruth seo a’ toirt geàrr-chunntas air a h-uile pròiseas nuair a bhios tu a’ ruith bash.

A 'ruith Bash gu mionaideach

A-nis leig dhuinn sùil nas mionaidiche a thoirt air gach pàirt.

Log a-steach Shell?

An toiseach feumaidh tu taghadh a bheil thu san t-slige logadh a-steach no nach eil.

Is e an t-slige logadh a-steach a’ chiad shlige a chuireas tu a-steach nuair a logas tu a-steach airson seisean eadar-ghnìomhach. Chan fheum an t-slige logadh a-steach ainm-cleachdaidh agus facal-faire. Faodaidh tu toirt air an t-slige logadh a-steach tòiseachadh le bhith a’ cur bratach ris --login nuair a chaidh a ghairm bashmar eisimpleir:

bash --login

Bidh an slige logadh a-steach a’ stèidheachadh na h-àrainneachd bhunaiteach nuair a thòisicheas tu air an t-slige bash an toiseach.

Eadar-ghnìomhach?

An uairsin bidh thu a 'dearbhadh a bheil an slige eadar-ghnìomhach no nach eil.

Faodar seo a dhearbhadh le làthaireachd an caochlaideach PS1 (bidh e a’ stàladh gnìomh cuir a-steach an àithne):

ma tha [ "${ PS1-}" ]; an uairsin mac-talla eadar-ghnìomhach eile mac-talla neo-eadar-ghnìomhach fi

No faic a bheil an roghainn air a shuidheachadh -i, a’ cleachdadh caochladair tàthan sònraichte - ann am bash, mar eisimpleir:

$ mac-talla$-

Ma tha samhla anns an toradh i, an uairsin tha an slige eadar-ghnìomhach.

Anns an t-slige logadh a-steach?

Ma tha thu ann an slige logadh a-steach, an uairsin bidh bash a’ coimhead airson am faidhle /etc/profile agus ruith ma tha e ann.

An uairsin lorg aon de na trì faidhlichean sin san òrdugh a leanas:

~/.bash_profile ~/.bash_login ~/.profile

Nuair a lorgas e fear, bidh e ga thòiseachadh agus a’ leum air an fheadhainn eile.

Ann an slige eadar-ghnìomhach?

Ma tha thu ann an slige gun logadh a-steach, thathas a’ gabhail ris gu bheil thu air a bhith ann an slige logadh a-steach mu thràth, tha an àrainneachd air a rèiteachadh agus thèid a shealbhachadh.

Anns a 'chùis seo, thèid an dà fhaidhle a leanas a chur gu bàs ann an òrdugh, ma tha iad ann:

/etc/bash.bashrc ~/.bashrc

Gun roghainn?

Mura h-eil thu ann an slige logadh a-steach no slige eadar-ghnìomhach, bidh an àrainneachd agad falamh gu dearbh. Tha seo ag adhbhrachadh tòrr troimh-chèile (faic gu h-ìosal mu obraichean cron).

Anns a 'chùis seo, bidh bash a' coimhead air a 'chaochlaideach BASH_ENV an àrainneachd agad agus cruthaichidh e am faidhle co-fhreagarrach a tha air a shònrachadh an sin.

Duilgheadasan Coitcheann agus Riaghailtean Deasg

obraichean cron

95% den ùine a bhios mi a’ deasbad toiseach tòiseachaidh bash is ann air sgàth nach eil an obair cron a’ ruith mar a bhiodh dùil.

An obair dhona seo ag obair gu math nuair a bhios mi ga ruith air an loidhne-àithne, ach a’ fàiligeadh nuair a ruitheas mi e ann an crontab.

tha e dà adhbhar:

  • Chan eil obraichean Cron eadar-ghnìomhach.
  • Eu-coltach ri sgriobtaichean loidhne-àithne, cha bhith obraichean cron a’ sealbhachadh àrainneachd nan sligean.

Mar as trice chan fhaic thu no cha mhothaich thu nach eil sgriobt shligean eadar-ghnìomhach leis gu bheil an àrainneachd a’ sealbhachadh bhon t-slige eadar-ghnìomhach. Tha seo a 'ciallachadh gu bheil a h-uile càil PATH и alias air a rèiteachadh mar a bhiodh dùil agad.

'S e sin carson a tha e riatanach gu tric a' suidheachadh sònraichte PATH airson obair cron mar seo:

* * * * * PATH=${PATH}:/path/to/my/program/folder myprogram

Sgriobtaichean a 'gairm air a chèile

Is e duilgheadas cumanta eile nuair a tha sgriobtaichean air an rèiteachadh le mearachd gus fios a chuir gu chèile. Mar eisimpleir, /etc/profile ath-thagraidhean gu ~/.bashrc.

Bidh seo mar as trice a’ tachairt nuair a dh’ fheuch cuideigin ri mearachd a cheartachadh agus bha coltas ann gun obraich a h-uile càil. Gu mì-fhortanach, nuair a dh'fheumas tu na diofar sheiseanan sin a sgaradh, bidh duilgheadasan ùra ag èirigh.

Dealbh Sandboxed Docker

Gus feuchainn ri slige a ruith, chruthaich mi ìomhaigh Docker a ghabhas cleachdadh airson debug a’ ruith slige ann an àrainneachd thèarainte.

Cur air bhog:

$ docker run -n bs -d imiell/bash_startup
$ docker exec -ti bs bash

Tha Dockerfile suidhichte an seo.

Gus logadh a-steach a sparradh agus atharrais air slige logadh a-steach:

$ bash --login

Gus deuchainn a dhèanamh air seata de chaochladairean BASH_ENV:

$ env | grep BASH_ENV

Airson debugging crontab thèid sgriobt sìmplidh a chuir gu bàs gach mionaid (ann an /root/ascript):

$ crontab -l
$ cat /var/log/script.log

Source: www.habr.com

Cuir beachd ann