सिस्टमडी (Systemd), यो लेख लेख्दाको समयमा, लिनक्स (Linux) का लागि डे-फ्याक्टो इनिट प्रणाली (de-facto init system) हो। सिस्टमडीका तीनवटा मुख्य पक्षहरू छन्:

  1. प्रणाली र सेवा प्रबन्धक (System and service manager)
  2. अन्य एप्लिकेसनहरू (Applications) विकास गर्नका लागि सफ्टवेयर प्लेटफर्म (Software platform)
  3. कर्नल (Kernel) र प्रयोगकर्ता एप्लिकेसनहरू (User applications) बीचको “गोंद” (Glue)

युनिटहरू (Units) Link to heading

सिस्टमडीले युनिटहरू (Units) व्यवस्थापन गर्छ। युनिटहरूको एकआपसमा निर्भरता (Dependency) हुन्छ र सिस्टमडीले त्यस निर्भरतालाई सम्हाल्छ। युनिट फाइल (Unit file) रहने स्थानहरू:

  • /lib/systemd/system :: प्याकेजद्वारा स्थापित युनिटहरू (package-installed units) का लागि
  • /etc/systemd/system :: प्रशासकद्वारा कन्फिगर गरिएका युनिटहरू (administrator-configured units) का लागि
  • /run/systemd/system :: गैर-स्थायी रनटाइम परिमार्जन (non-persistent runtime modification) का लागि

युनिट फाइलहरू name.type ढाँचामा नामकरण गरिन्छ। उदाहरणका लागि: ssh.socket, example.service। युनिट फाइलले टोमल (TOML) जस्तै सिन्ट्याक्स (Syntax) पालना गर्दछ।

[Unit]
Description=Consul
Requires=network-online.target
After=network-online.target

[Service]
Restart=on-failure
ExecStart=/usr/local/bin/example 
ExecReload=/bin/kill -HUP $MAINPID
killSignal=SIGTERM
User=consul
Group=consul

[Install]
WantedBy=multi-user.target

सेवा युनिटका प्रकारहरू (Service Unit Types) Link to heading

  • सिम्पल (Simple - default): डेमनाइज (Daemonising) नगरी चल्ने एक्जिक्युटेबल (Executables) का लागि।
  • फोर्किङ (Forking): आफैँ डेमनाइज (Daemonise) हुने एक्जिक्युटेबल (Executables) का लागि।
  • वानसट (Oneshot): सामान्यतया छोटो समय चल्ने प्रोग्रामहरू (Programs) जुन पूरा भएपछि बन्द हुन्छन्।
  • नोटिफाई (Notify): एक्जिक्युटेबल (Executables) का लागि जसले सुरु भएपछि र कामको लागि उपलब्ध भएपछि सिस्टमडी (Systemd) लाई सूचित गर्दछ।

युनिट कमाण्डहरू (Unit Commands) Link to heading

  • systemctl enable example.service :: बुट (Boot) हुँदा सुरु हुन्छ
  • systemctl start example.service :: सेवा सुरु गर्न
  • systemctl stop example.service :: सेवा बन्द गर्न
  • systemctl restart example.service :: सेवा पुनः सुरु गर्न
  • systemctl status consul.service :: सेवाको स्थिति (Status) हेर्न

ड्रप-इन कन्फिगरेसन (Drop-in Configuration) Link to heading

पूर्वनिर्धारित सेवा कन्फिगरेसन (Default service configuration) परिमार्जन गर्न /etc/systemd/system/example.service.d/example.conf स्थान प्रयोग गर्न सकिन्छ। हामी कुनै पनि सेवाको युनिट फाइलको अन्तिम कन्फिगरेसन हेर्न systemd-delta कमाण्ड प्रयोग गर्न सक्छौँ।

साझा बुटस्ट्र्यापिङ ढाँचा (Common Bootstrapping Pattern) Link to heading

  • जेनेरिक प्याकेज (Generic package) बाट सफ्टवेयर स्थापना गर्नुहोस्।
  • बुटस्ट्र्यापिङ स्क्रिप्ट (Bootstrapping script) र ड्रप-इन कन्फिगरेसन (Drop-in configuration) वातावरण-विशिष्ट प्याकेज (Environment-specific package) स्थापना गर्नुहोस्।

टार्गेट युनिटहरू (Target Units) Link to heading

रनलेभल (Runlevel) को विकल्प। जब सबै सेवाहरू सफलतापूर्वक सुरु हुन्छन्, तब टार्गेट (Target) प्राप्त हुन्छ।

सकेट युनिटहरू (Socket Units) Link to heading

सेवा (Service) र सकेट (Socket) लाई अलग गर्न सक्षम बनाउँछ। सेवा बन्द हुँदा सकेट बन्द हुनु पर्दैन।

टाइमर युनिटहरू (Timer Units) Link to heading

क्रोन (Cron) को विकल्पको रूपमा।

सेवाको उदाहरण (Example service) Link to heading

[Unit]
Description="example script/service that needs to be run"

[Service]
Type=oneshot
ExecStart="bash example.sh"

टाइमर सेवा (Timer service) Link to heading

[Unit]
Description="run example.service every 10 minutes"

[Timer]
OnCalendar=*:0/10