Baptiste Daroussin, anĂ«tar i FreeBSD Core Team dhe autor i menaxherit tĂ« paketave pkg, po zhvillon njĂ« menaxher tĂ« ri sistemi pĂ«r FreeBSD â rcd. Menaxheri i sistemit rcd thirret nga procesi init nĂ« vend tĂ« /etc/rc, lexon skedarĂ«t e konfigurimit tĂ« shĂ«rbimeve (/etc/rcd.d/*.ucl), ndĂ«rton pemĂ«n e varĂ«sive dhe nis shĂ«rbimet, kur Ă«shtĂ« e mundur, paralelisht me njĂ«ra-tjetrĂ«n; mĂ« pas monitoron funksionimin e tyre dhe, nĂ«se Ă«shtĂ« e nevojshme, i rinis.
Menaxhimi i procesit nĂ« sfond dhe operacionet me shĂ«rbimet mund tĂ« kryhen pĂ«rmes dĂ«rgimit tĂ« drejtpĂ«rdrejtĂ« tĂ« komandave nĂ« njĂ« UNIX socket ose me ndihmĂ«n e programit tĂ« linjĂ«s sĂ« komandĂ«s rctl. SkedarĂ«t unit me parametrat e shĂ«rbimeve pĂ«rgatiten nĂ« formatin UCL, i cili ngjan me formatin e skedarĂ«ve tĂ« konfigurimit tĂ« nginx dhe bind, me elemente tĂ« huazuara nga JSON pĂ«r tĂ« thjeshtuar pĂ«rpunimin e automatizuar. Ofrohet mundĂ«sia pĂ«r tĂ« krijuar shabllone tĂ« skedarĂ«ve tipikĂ« unit dhe pĂ«r tĂ« shkruar pĂ«rpunues tĂ« integruar nĂ« gjuhĂ«n Lua. Shembull i njĂ« skedari unit pĂ«r nisjen e nginx: name = «nginx»; description = «Nginx HTTP Server»; type = «simple»; command = «/usr/local/sbin/nginx»; command_args = «-g âdaemon off;'»; provides = [«nginx», «http»]; requires = [«NETWORKING», «sshd»]; restart { policy = «always»; max_retries = 10; delay = 2000; backoff = «linear»; } process { user = «www»; group = «www»; cpuset = «0-3»; } rctl { memoryuse = { action = «deny»; amount = «2g»; }; pcpu = { action = «throttle»; amount = «80»; }; }
NĂ« vend tĂ« punĂ«s me skedarĂ«t PID, ndjekja e aktivitetit tĂ« proceseve tĂ« nisura kryhet duke pĂ«rdorur deskriptorĂ«t e kthyer nga thirrja e sistemit pdfork(). MbĂ«shtetet aktivizimi i shĂ«rbimeve vetĂ«m kur ka akses nĂ« njĂ« socket rrjeti, si dhe mbrojtja e shĂ«rbimeve tĂ« rĂ«ndĂ«sishme nga mbyllja e detyruar nĂ« rast mungese memorieje nĂ« sistem. ĂshtĂ« i mundur pĂ«rditĂ«simi i versionit tĂ« procesit nĂ« sfond rcd nĂ« kohĂ« reale pa humbje tĂ« gjendjes.
Për kufizimin e burimeve të disponueshme për shërbimin përdoret rctl, ndërsa për izolimin e plotë të shërbimeve mbështetet nisja e tyre në mjedise jail. Mund të konfigurohet qasja te UNIX socket i menaxhimit e lidhur me shërbime të veçanta. Mbështetet kalimi në modalitet gjumi.
Menaxheri i sistemit është plotësisht i përputhshëm prapavajtshëm me sistemin ekzistues të nisjes sekuenciale të shërbimeve rc.d dhe mund të funksionojë pa ndryshuar skriptet rc.d dhe skedarët e konfigurimit ekzistues. Mjafton të instaloni rcd në një sistem në funksionim dhe, pas rinisjes, gjithçka do të vazhdojë të punojë si më parë, me përjashtim të shkurtimit të kohës së nisjes falë paralelizimit të startimit të shërbimeve. Një përputhshmëri e tillë do ta thjeshtojë migrimin e sistemeve në rcd dhe do të mundësojë kalimin gradual të skripteve ekzistuese rc.d në formatin e skedarëve unit.
Për përputhshmëri me rc.d mbështetet një lloj i veçantë i unit-eve, «legacy». Rcd skanon përmbajtjen e /etc/rc.d/ dhe /usr/local/etc/rc.d/, analizon titujt PROVIDE/REQUIRE/BEFORE/KEYWORD në skripte, lexon cilësimet e rc.conf dhe përcakton gjendjen e nisjes së skripteve, pas së cilës e përpunon secilin skript si një legacy unit virtual. Nëse përdoret komanda rcctl për menaxhimin e këtyre unit-eve virtuale, operacionet përkthehen në formatin e vjetër; për shembull, ekzekutimi i «rcctl reload sshd» do të çojë në nisjen e komandës «/etc/rc.d/sshd reload».
Burimi: opennet.ru
