Chun próiseálaithe a bhainistiú, tá córais tosaigh ag Linux cosúil le systemd. Má theastaíonn réiteach níos simplí uait, clár a fhéadfaidh próisis d’iarratais a bhainistiú, sa chóras nó i gcoimeádán Docker. Tá a leithéid de chlár ann - is maoirseoir é. Bainisteoir próisis foinse oscailte atá simplí go feidhmiúil scríofa i Python, leis ar féidir leat an líon cóipeanna atá ag teastáil de phróiseas a sheoladh agus monatóireacht a dhéanamh ar a stádas. Ansin inseoimid duit conas Maoirseoir a shuiteáil agus a chumrú ag baint úsáide as Ubuntu 20.04 mar shampla.
Is é an bealach is éasca chun an clár a fháil ná é a shuiteáil ó na stórtha oifigiúla. Chun seo a dhéanamh ní mór duit an t-ordú a rith:
$ sudo apt install supervisor
Más mian leat go n-oibreoidh an clár i gcónaí, ní mór duit é a chur leis an am tosaithe agus é a rith. Rith:
$ sudo systemctl enable supervisor --now
Ansin is féidir leat an stádas a fheiceáil ag baint úsáide as an ordú:
$ sudo systemctl status supervisor
Tá an comhad cumraíochta suite ag /etc/supervisor/supervisord.conf.
Seo iad na príomhshocruithe. Chun próisis seolta a chumrú, is fearr an /etc/supervisor/conf.d/.
Is féidir an príomhchomhad cumraíochta a fhágáil mar réamhshocrú. Breathnaímid ar conas comhaid cumraíochta a chruthú do chláir. Breathnaíonn an chomhréir rannóige do phróiseas amháin mar seo:
variable name value
I gcás gach próiseas, ní mór na hathróga seo a leanas a phasáil ar a laghad ionas gur féidir é a thosú agus a ghnóthú go huathoibríoch tar éis timpiste:
directory
- eolaire oibre;command
- ordú tosaithe próisis;user
- an t-úsáideoir a seolfar an próiseas thar a cheann;autostart
- an gá an próiseas a thosú go huathoibríoch;autorestart
- an gá an próiseas a atosú;Mar sin féin, tá i bhfad níos mó socruithe ar fáil, seo cuid de na cinn a bheidh faoi chaibidil san alt seo:
priority
- tosaíocht don phróiseas atá á sheoladh;environment
- athróga comhshaoil nach mór a chur ar aghaidh chuig an bpróiseas;stdout_logfile
- cá háit le haschur stdout an phróisis a atreorú;stderr_logfile
- cá háit le haschur stderr an phróisis a atreorú;process_name
- ainm an phróisis, agus an cumas an chóipuimhir a ionadú;numprocs
- líon na gcóipeanna seolta den phróiseas;startretries
- líon na n-iarrachtaí chun an clár a thosú;redirect_stderr
- aschur earráide próisis a atreorú chuig aschur maoirseoirí;redirect_stdout
- aschur próisis a atreorú chuig aschur maoirseora.Chun tuiscint agus sampla níos fearr a fháil, déanaimis script a reáchtáil i PHP, a bheidh ar crochadh sa chúlra:
$ sudo vi /home/sergiy/program/process.php <?php echo "Started..."; while(true){ sleep(5); }
Is féidir leat comhad cumraíochta maoirseora ar leith a chruthú don phróiseas. Is féidir leat an chumraíocht a chur isteach go díreach ag deireadh an phríomhchomhad cumraíochta, ach is fearr gan é seo a dhéanamh. Tá sé níos fearr comhad cumraíochta ar leith a chruthú do gach clár san eolaire /etc/supervisor/conf.d/
leis an ainm *.conf. Mar shampla, don chlár seo beidh cuma mar seo ar an gcomhad seo:
$ sudo vi /etc/supervisor/conf.d/process.conf [program:process] directory=/home/sergiy/program/ command=/usr/bin/php process.php user=sergiy autostart=true autorestart=true
Ansin ní mór duit maoirseoir a atosú, is féidir é seo a dhéanamh ag baint úsáide as systemctl:
$ sudo systemctl restart supervisor
Nó ag baint úsáide as an áirgiúlacht supervisorctl
:
$ sudo supervisorctl reload
Is féidir leat féachaint freisin ar stádas na bpróiseas cumraithe ag baint úsáide as an ordú:
Má tá an próiseas i stádas RUNNING, tá sé seo go léir go maith agus seoladh go rathúil é. Ach sa chás seo, seoltar an próiseas i gcás amháin, agus go minic is gá roinnt cóipeanna den phróiseas céanna a sheoladh. Chun seo a dhéanamh, is féidir leat na paraiméadair process_name
agus numprocs
a úsáid. Ceadaíonn an chéad cheann duit ainm an phróisis a mhodhnú ionas go mbeidh an uimhir chóip ann, agus sonraíonn an dara ceann cé mhéad cóip atá le rith.
Líontar an athróg process_name
de ghnáth le teimpléad formáidithe teaghrán python ina bhfuil ainm an chláir agus uimhir an phróisis: %(program_name)s_%(process_num)02d
. Anseo idir lúibíní tá ainm an athróg, agus a chineál ina dhiaidh sin. Mar shampla, chun an clár céanna a rith i gceithre snáithe, ní mór an comhad cumraíochta a athrú go dtí an fhoirm seo:
$ sudo vi /etc/supervisor/conf.d/process.conf [program:process] directory=/home/sergiy/program/ command=/usr/bin/php process.php user=sergiy autostart=true autorestart=true process_name=%(program_name)s_%(process_num)02d numprocs=4
Anois ní mór duit supervisorctl
a atosú agus beidh 4 phróiseas ar siúl cheana féin:
$ sudo supervisorctl status
Ag an am céanna, is féidir leat a shábháil ar fad an t-aschur sonraí ag an gclár go comhad logáil isteach. stderr_logfile.
na paraiméadair stdout_logfile
agus stderr_logfile chuige seo. Mar shampla, is féidir leat comhad logála dá fhorghníomhú a thaispeáint ar dheis san fhillteán leis an gclár.
$ sudo vi /etc/supervisor/conf.d/process.conf [program:process] directory=/home/sergiy/program/ command=/usr/bin/php process.php user=sergiy autostart=true autorestart=true process_name=%(program_name)s_%(process_num)02d numprocs=4 stdout_logfile=/home/sergiy/program/process.log stderr_logfile=/home/sergiy/program/process.log.error
Tar éis duit an tseirbhís a atosú, beidh logs le feiceáil i bhfillteán an chláir:
Mar an gcéanna, más mian leat aschur do phróisis a atreorú chuig aschur caighdeánach maoirseora, ba cheart duit na redirect_stdout.
redirect_stderr
agus redirect_stdout a úsáid. Má tá aon athróg timpeallachta ag teastáil ó do chlár, is féidir leat iad a chur ar aghaidh ag baint úsáide as paraiméadar an chomhshaoil. Ní mór athróga a scríobh scartha le camóga. Mar shampla:
$ environment=DISPLAY=":1",HOME="/root"
Tar éis gach athrú cumraíochta, ná déan dearmad an maoirseoir a atosú chun na hathruithe a chur i bhfeidhm. Is féidir leat próisis a bhainistiú ag baint úsáide as an bhfóntas maoirseachta. Mar a thuig tú cheana, chun liosta na bpróiseas a fheiceáil is gá duit a rith:
$ sudo supervisorctl status
Ansin, agus ainm an phróisis ar eolas agat, is féidir leat é a atosú, mar shampla process:process_00
:
$ sudo supervisorctl restart process:process_00
Stop:
$ sudo supervisorctl stop process:process_00
Nó rith:
$ sudo supervisorctl start process:process_00
Ina theannta sin, is féidir leat ceangal leis an bpróiseas agus féach cad a aschuireann sé go stdout/stderr
ag baint úsáide as an fg:
$ sudo supervisorctl fg process:process_00
D'fhéachamar ar an gcaoi a bhfuil supervisor
cumraithe, chomh maith le conas an clár a úsáid chun próisis a bhainistiú.