Yadda ake Ƙirƙiri da Gudanar da Sabbin Rukunin Sabis a cikin Systemd Ta Amfani da Rubutun Shell


Kwanaki kaɗan da suka gabata, na ci karo da wani Centos 7 32-bit distro kuma na ji sha'awar gwada shi akan tsohuwar injin 32-bit. Bayan booting na gane cewa yana da bug kuma yana kwance haɗin haɗin yanar gizon, wanda dole ne in kunna shi da hannu kowane lokaci bayan boot. Don haka, tambayar ita ce ta yaya zan iya saita rubutun yin wannan aikin, yana gudana kowane lokaci. lokacin ina taya inji na?

To, wannan abu ne mai sauqi qwarai kuma zan nuna muku hanyar tsarin ta amfani da sassan sabis. Amma da farko ƙaramin gabatarwa ga rukunin sabis.

A cikin wannan labarin, zan yi bayanin menene sashin sabis a cikin systemd, yadda sauƙin ƙirƙira da gudanar da ɗayan. Zan yi ƙoƙarin sauƙaƙa menene \manufa, dalilin da yasa muke kiran su tarin tattarawa na raka'a da menene \so. A ƙarshe muna amfani da sashin sabis don gudanar da rubutun namu bayan tsarin taya.

A bayyane yake cewa kwamfutarka tana da amfani saboda ayyukan da take bayarwa kuma don samun wannan aikin, yawancin ayyuka dole ne a kira su azaman takalman kwamfuta kuma sun kai matakai daban-daban. Ana kiran wasu ayyuka don aiwatar da su lokacin da kwamfutar ta kai misali matakin ceto (runlevel 0) da sauransu idan ta kai matakin masu amfani da yawa (runlevel 3). Kuna iya tunanin waɗannan matakan azaman hari.

A cikin hanya mai sauƙi manufa shine tarin sassan sabis. Idan kana son kallon sassan sabis da ke gudana a matakin graphical.target, rubuta:

# systemctl --type=service

Kamar yadda kake gani wasu ayyuka suna aiki kuma suna aiki da \gudu koda yaushe, yayin da wasu ke gudana lokaci ɗaya kuma suna ƙare (ficewa) Idan kana son duba matsayin sabis, rubuta:

# systemctl status firewalld.service

Kamar yadda kake gani na duba matsayin firewalld.service (tip: zaka iya amfani da auto-cikakke don sunan sabis ɗin). Yana sanar da ni cewa sabis na Firewalld yana gudana koyaushe kuma yana kunna shi.

Kunna da kashewa yana nufin za a loda sabis ɗin dindindin ko a'a, yayin taya na gaba bi da bi. A gefe guda don farawa da dakatar da sabis yana da iyakancewar zaman yanzu kuma ba ta dindindin ba.

Misali, idan ka rubuta:

# systemctl stop firewalld.service
# systemctl status firewalld.service

Kuna iya ganin cewa firewalld.service baya aiki (matattu) amma har yanzu an kunna shi, wanda ke nufin cewa yayin boot na gaba za a loda shi. Don haka idan muna son a loda sabis a lokacin taya a nan gaba dole ne mu kunna shi. Abin da babban ƙarshe! Bari mu ƙirƙira ɗaya, yana da sauƙi.

Idan kun je babban fayil:

# cd /etc/systemd/system
# ls -l

Kuna iya ganin wasu fayilolin haɗin yanar gizo na sabis na rukuni da wasu kundayen adireshi na \so na manufa. Misali: abin da maƙasudin masu amfani da yawa ke son a lodawa lokacin da tsarin taya ya kai matakinsa, an jera su a cikin kundin adireshi mai suna. /etc/systemd/system/multi-user.target.wants/.

# ls multi-user.target.wants/

Kamar yadda kuke gani baya ƙunshi ayyuka kawai amma har da wasu maƙasudai waɗanda kuma tarin ayyuka ne.

Bari mu yi sashin sabis tare da haɗin suna.sabis.

# vim connection.service

sannan ka rubuta wadannan (latsa \idon yanayin sakawa), ajiye shi ka fita (tare da \esc da \:wq!):

[Unit]
Description = making network connection up
After = network.target

[Service]
ExecStart = /root/scripts/conup.sh

[Install]
WantedBy = multi-user.target

Don bayyana abubuwan da ke sama: Mun ƙirƙiri na nau'in sabis (Hakanan kuna iya ƙirƙirar raka'a na nau'in manufa), mun saita shi bayan hanyar sadarwa ta kai wa maƙasudin da aka ayyana oda) kuma muna son duk lokacin da sabis ɗin ya fara aiwatar da rubutun bash tare da sunan conup.sh wanda za mu ƙirƙira.

Nishaɗin yana farawa da ɓangaren ƙarshe [install]. Yana nuna cewa \multi-user.target za a so shi. Don haka idan muka ba da damar sabis ɗinmu za a ƙirƙiri hanyar haɗi ta alama zuwa wannan sabis ɗin a cikin babban fayil ɗin multi-user.target.wants! Samu shi? Kuma idan muka musaki Za'a goge wannan hanyar haɗin gwiwa. Don haka mai sauƙi.

Kawai kunna shi kuma duba:

# systemctl enable connection.service

yana sanar da mu cewa an ƙirƙiri hanyar haɗi ta alama a cikin babban fayil ɗin multi-user.target.wants. Duba shi:

# ls multi-user.target.wants/

Kamar yadda kuke gani \connection.service yana shirye don yin booting na gaba, amma dole ne mu fara ƙirƙirar fayil ɗin rubutun.

# cd /root
# mkdir scripts
# cd scripts
# vim conup.sh

Ƙara layi mai zuwa a cikin vim kuma ajiye shi:

#!/bin/bash
nmcli connection up enp0s3

Tabbas idan kuna son rubutunku ya aiwatar da wani abu daban, zaku iya rubuta duk abin da kuke so maimakon layi na biyu.

Misali,

#!/bin/bash
touch /tmp/testbootfile

wanda zai haifar da fayil a ciki/tmp babban fayil (kawai don duba cewa sabis ɗin ku yana aiki).

Dole ne kuma mu sanya rubutun aiwatarwa:

# chmod +x conup.sh

Yanzu mun shirya. Idan ba kwa son jira har sai taya na gaba (an riga an kunna shi) za mu iya fara sabis ɗin don bugawa na yanzu:

# systemctl start connection.service

Voila! Haɗin nawa yana aiki!

Idan kun zaɓi rubuta umarnin \touch /tmp/testbootfile a cikin rubutun, kawai don bincika ayyukansa, za ku ga wannan fayil ɗin da aka ƙirƙira a cikin /tmp babban fayil.

Ina fatan gaske don taimaka muku gano menene sabis, buƙatu, maƙasudi da rubutun gudana yayin booting gabaɗaya.