Baptiste Daroussin, FreeBSD Core Team loceklis un pkg pakotņu pārvaldnieka autors, attīsta jaunu sistēmas pārvaldnieku FreeBSD - rcd. Sistēmas pārvaldnieks rcd tiek izsaukts init procesu ietvaros, nevis /etc/rc, nolasot pakalpojumu konfigurācijas failus (/etc/rcd.d/*.ucl), veidojot atkarību koku un uzsākot pakalpojumus, cik vien iespējams paralēli, pēc kā tiek uzraudzīta pakalpojumu darbība un, ja nepieciešams, tos pārstartē.
Fona procesa vadība un operācijas ar pakalpojumiem var tikt veikta, tieši nosūtot komandas UNIX soketam vai izmantojot rctl komandrindas rīku. Vienību faili ar pakalpojumu parametriem tiek veidoti UCL formātā, kas atgādina nginx un bind konfigurācijas failu formātu ar elementiem, kas atvieglota automatizētu apstrādi, aizņemti no JSON. Ir iespēja izveidot rakstus tipisko vienību failu veidošanai un rakstīt iebūvētos apstrādātājus Lua valodā. Piemērs vienību failam nginx palaišanai: 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"; }; }
Vietā, kur strādāt ar PID failiem, uzsākto procesu aktivitāte tiek uzraudzīta, izmantojot deskriptora vērtības, ko atgriež sistēmas izsaukums pdfork(). Ir iespējams aktivizēt pakalpojumus tikai tad, kad tiek piekļūts tīkla soketam, un ir iespēja aizsargāt svarīgus pakalpojumus no piespiedu pārtraukšanas gadījumā, ja sistēmā trūkst atmiņas. Ir iespējams atjaunināt fona procesa rcd versiju reālajā laikā bez stāvokļa zuduma.
Lai ierobežotu pakalpojumam pieejamos resursus, tiek izmantots rctl, un pilnīgai izolācijai pakalpojumi tiek palaisti jail vidēs. Ir iespējams konfigurēt piekļuvi pārvaldības UNIX soketam atsevišķiem pakalpojumiem. Atbalsta pāreju uz miega režīmu.
Sistēmu pārvaldnieks ir pilnībā saderīgs ar esošo secīgās pakalpojumu palaišanas sistēmu rc.d un var darboties bez izmaiņām esošajos rc.d skriptos un konfigurācijas failos. Pietiek uzstādīt rcd uz strādājošas sistēmas, un pēc atkārtotas palaišanas viss turpinās darboties kā agrāk, izņemot samazināto palaišanas laiku, pateicoties pakalpojumu palaišanas paralelizēšanai. Šī saderība atvieglos sistēmu migrāciju uz rcd un dos iespēju pakāpeniski pārvērst esošos rc.d skriptus unit failu formātā.
Lai nodrošinātu saderību ar rc.d, atbalsta īpašu unit tipu „legacy”. Rcd skan saturu /etc/rc.d/ un /usr/local/etc/rc.d/, analizē skriptu PROVIDE/REQUIRE/BEFORE/KEYWORD virsrakstus, lasa rc.conf iestatījumus un nosaka skriptu palaišanas stāvokli, pēc tam apstrādā katru skriptu kā virtuālo legacy unit. Ja tiek izmantota komanda rcctl, lai pārvaldītu šādus virtuālos unit, operācijas tiek pārveidotas vecajā formatā, piemēram, komandas „rcctl reload sshd” izpilde izraisīs „/etc/rc.d/sshd reload”.
Avots: opennet.lv
