FreeBSD အတွက် စနစ်မန်နေဂျာအသစ် rcd ကို တီထွင်နေပါသည်။

FreeBSD Core Team အဖွဲ့ဝင်တစ်ဦးဖြစ်ပြီး pkg package manager ရဲ့ ရေးသားသူဖြစ်တဲ့ Baptiste Daroussin ဟာ FreeBSD အတွက် system manager အသစ်တစ်ခုဖြစ်တဲ့ rcd ကို တီထွင်နေပါတယ်။ rcd system manager ကို /etc/rc အစား init process ကနေ invoke လုပ်ပြီး၊ service configuration files (/etc/rcd.d/*.ucl) ကို ဖတ်ပါတယ်၊ dependency tree တစ်ခု တည်ဆောက်ပြီး ဖြစ်နိုင်တဲ့အခါတိုင်း service တွေကို parallel နဲ့ စတင်ပါတယ်။ ပြီးရင် service တွေကို စောင့်ကြည့်ပြီး လိုအပ်ရင် restart လုပ်ပါတယ်။

နောက်ခံလုပ်ငန်းစဉ်နှင့် ဝန်ဆောင်မှုများဖြင့် လုပ်ဆောင်မှုများကို ထိန်းချုပ်ခြင်းကို UNIX socket သို့ command များ တိုက်ရိုက်ပေးပို့ခြင်း သို့မဟုတ် rctl command-line utility ကို အသုံးပြုခြင်းဖြင့် လုပ်ဆောင်နိုင်သည်။ ဝန်ဆောင်မှု parameter များပါရှိသော unit ဖိုင်များကို nginx ၏ format နှင့်ဆင်တူသော UCL တွင် format လုပ်ထားပြီး JSON မှ ငှားယူထားသော element များဖြင့် configuration ဖိုင်များကို bind လုပ်ကာ အလိုအလျောက် လုပ်ဆောင်ခြင်းကို ရိုးရှင်းစေသည်။ ပုံမှန် unit ဖိုင်များ၏ template များကို ဖန်တီးနိုင်ပြီး Lua တွင် built-in handler များကို ရေးသားနိုင်သည်။ nginx စတင်ရန်အတွက် unit ဖိုင်၏ ဥပမာ- 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"; }; }

PID ဖိုင်များကို အသုံးပြုမည့်အစား၊ လည်ပတ်နေသော လုပ်ငန်းစဉ်များ၏ လုပ်ဆောင်ချက်ကို ခြေရာခံခြင်းကို pdfork() system call မှ ပြန်ပေးသော descriptors များကို အသုံးပြု၍ လုပ်ဆောင်သည်။ network socket ကို ဝင်ရောက်သည့်အခါတွင်သာ ဝန်ဆောင်မှုများကို အသက်သွင်းရန် ပံ့ပိုးမှုရှိပြီး မှတ်ဉာဏ်နည်းသော အခြေအနေများတွင် အရေးကြီးသော ဝန်ဆောင်မှုများကို အတင်းအကျပ် ရပ်စဲခြင်းမှ ကာကွယ်နိုင်စွမ်း ရှိသည်။ rcd background process version ကို state မဆုံးရှုံးဘဲ ချက်ချင်း အပ်ဒိတ်လုပ်နိုင်သည်။

rctl ကို ဝန်ဆောင်မှုတစ်ခုအတွက် ရရှိနိုင်သော အရင်းအမြစ်များကို ကန့်သတ်ရန်အသုံးပြုပြီး ဝန်ဆောင်မှုများကို သီးခြားခွဲထားရန်အတွက် ထောင်ချောက်ဆင်ထားသောပတ်ဝန်းကျင်များတွင် လုပ်ဆောင်နိုင်သည်။ UNIX ထိန်းချုပ်မှု socket သို့ ဝင်ရောက်ခွင့်ကို ဝန်ဆောင်မှုတစ်ခုချင်းစီအတွက် ပြင်ဆင်သတ်မှတ်နိုင်သည်။ Sleep mode ကို ပံ့ပိုးပေးသည်။

စနစ်မန်နေဂျာသည် လက်ရှိ rc.d ဝန်ဆောင်မှု အစဉ်လိုက်စတင်မှုစနစ်နှင့် အပြည့်အဝ နောက်ပြန်လိုက်ဖက်ညီပြီး လက်ရှိ rc.d script များနှင့် configuration ဖိုင်များကို ပြုပြင်မွမ်းမံခြင်းမရှိဘဲ အသုံးပြုနိုင်ပါသည်။ လုပ်ဆောင်နေသောစနစ်တွင် rcd ကို ထည့်သွင်းလိုက်ရုံဖြင့် reboot လုပ်ပြီးနောက် parallelized service startup ကြောင့် boot အချိန်လျော့နည်းသွားခြင်းမှအပ အရာအားလုံးသည် ယခင်အတိုင်း ဆက်လက်လုပ်ဆောင်နေမည်ဖြစ်သည်။ ဤလိုက်ဖက်ညီမှုသည် စနစ်များကို rcd သို့ ရွှေ့ပြောင်းခြင်းကို ရိုးရှင်းစေပြီး လက်ရှိ rc.d script များကို unit file format သို့ တဖြည်းဖြည်းပြောင်းလဲနိုင်စေမည်ဖြစ်သည်။

rc.d နှင့် တွဲဖက်အသုံးပြုနိုင်စေရန်အတွက် အထူး "legacy" unit အမျိုးအစားကို ပံ့ပိုးပေးပါသည်။ Rcd သည် /etc/rc.d/ နှင့် /usr/local/etc/rc.d/ တို့၏ အကြောင်းအရာများကို စကင်ဖတ်ပြီး script များတွင် PROVIDE/REQUIRE/BEFORE/KEYWORD headers များကို parse လုပ်ကာ rc.conf setting များကို ဖတ်ကာ script execution state ကို ဆုံးဖြတ်ပြီးနောက် script တစ်ခုချင်းစီကို legacy virtual unit အဖြစ် လုပ်ဆောင်ပါသည်။ ထိုကဲ့သို့သော virtual units များကို စီမံခန့်ခွဲရန် rcctl command ကိုအသုံးပြုသည့်အခါ လုပ်ဆောင်ချက်များကို legacy format သို့ ဘာသာပြန်ဆိုပါသည်။ ဥပမာအားဖြင့် "rcctl reload sshd" ကို လုပ်ဆောင်ခြင်းသည် "/etc/rc.d/sshd reload" ကို လုပ်ဆောင်ပါလိမ့်မည်။

source: opennet.ru

DDoS ကာကွယ်ရေး၊ VPS VDS ဆာဗာများပါသည့် ဆိုက်များအတွက် ယုံကြည်စိတ်ချရသော hosting ကို ဝယ်ယူပါ။ 🔥 DDoS ကာကွယ်မှု၊ VPS VDS ဆာဗာများပါရှိသော ယုံကြည်စိတ်ချရသော ဝဘ်ဆိုက် hosting ကို ဝယ်ယူပါ | ProHoster