“Shell” skriptini ulanyp, “Systemd” -de täze hyzmat bölümlerini nädip döretmeli we işletmeli


Birnäçe gün ozal Centos 7 32 bitli distro bilen tanyşdym we köne 32 bitli enjamda synag etmek islegimi duýdum. Bootüklänimden soň, bir näsazlygyň bardygyny we set birikmesini ýitirýändigine düşündim, her gezek ýüklenenden soň el bilen ýokaryk açmaly boldum. Şeýlelik bilen, bu işi ýerine ýetirýän skripti nädip düzüp biljekdigim, her gezek işleýän maşynymy açýan wagtym?

Dogrusy, bu gaty ýönekeý we hyzmat bölümlerini ulanyp, size ulgamlaýyn ýol görkezerin. Emma ilki bilen hyzmat bölümlerine kiçijik giriş.

Bu makalada, systemd-de\hyzmat bölüminiň nämedigini, birini döretmegiň we işletmegiň aňsatdygyny düşündirmekçi. Men nyşanalaryň nämedigini, näme üçin olara kolleksiýa diýýändigimizi aňsatlaşdyrjak bolaryn. birlikleri ”we olaryň\isleýänleri näme. Ahyrynda, boot prosedurasyndan soň öz skriptimizi işletmek üçin hyzmat bölüminden peýdalanýarys.

Kompýuteriňiziň hödürleýän hyzmatlary sebäpli peýdalydygy we bu işlemegi üçin köp hyzmatlaryň kompýuteriň açylmagy we dürli derejelere ýetmegi ýaly atlandyrylmalydygy äşgärdir. Beýleki hyzmatlar, mysal üçin halas ediş derejesine (runlevel 0) we beýlekiler köp ulanyjy derejesine ýetende (runlevel 3) ýerine ýetirilende çagyrylýar. Bu derejeleri nyşana hökmünde göz öňüne getirip bilersiňiz.

Simpleönekeý görnüşde maksat hyzmat bölümleriniň ýygyndysydyr. Grafiki.target derejäňizde işleýän hyzmat bölümlerine göz aýlamak isleseňiz, ýazyň:

# systemctl --type=service

Görşüňiz ýaly, käbir hyzmatlar hemişe işjeň we\işleýär, beýlekiler bir gezek işleýär we ýatyrýar (çykýar) Hyzmatyň ýagdaýyny barlamak isleseňiz ýazyň:

# systemctl status firewalld.service

Görşüňiz ýaly, firewalld.service ýagdaýyny barladym (maslahat: hyzmatyň ady üçin awtomatiki usulda ulanyp bilersiňiz). Firewalld hyzmatynyň elmydama işleýändigini we açykdygyny maňa habar berýär.

Işledilen we ýapyk, indiki ýükleme wagtynda hyzmatyň hemişelik ýüklenjekdigini ýa-da ýokdugyny aňladýar. Beýleki tarapdan, bir hyzmaty başlamak we duruzmak üçin häzirki sessiýanyň çäkliligi bar we ol hemişelik däl.

Mysal üçin, ýazsaňyz:

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

firewalld.service hereketsiz (öli) görüp bilersiňiz, emma henizem açyk, indiki ýükleme wagtynda ýüklenjekdigini aňladýar. Şonuň üçin geljekde bir hyzmatyň ýüklenýän wagtynda ýüklenmegini islesek, ony açmalydyrys. Bu nähili gowy netije! Birini döredeliň, bu aňsat.

Papka girseňiz:

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

Bölüm hyzmatlarynyň käbir baglanyşyk faýllaryny we nyşanyň\isleýän käbir kataloglaryny görüp bilersiňiz. Mysal üçin: köp ulanyjy nyşany, ýüklemek prosedurasy derejesine ýeteninde ýüklemek isleýän zady, ady bilen katalogda görkezilýär. /etc/systemd/system/multi-user.target.wants/.

# ls multi-user.target.wants/

Görşüňiz ýaly, diňe hyzmatlar däl, hyzmatlar ýygyndysy bolan beýleki maksatlar hem bar.

Geliň, connection.service ady bilen hyzmat bölümini edeliň.

# vim connection.service

we aşakdakylary ýazyň (goýmak tertibi üçin \i basyň), saklaň we çykyň (\esc we \: wq! ):

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

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

[Install]
WantedBy = multi-user.target

Aboveokardakylary düşündirmek üçin: hyzmat görnüşiniň birligini döretdik (maksat görnüşiniň birliklerini hem döredip bilersiňiz), network.target-den soň ýüklenmegini belledik (ýüklemegiň prosedurasynyň kesgitlenen maksatlara ýetýändigine düşünip bilersiňiz) sargyt) we her gezek hyzmatyň döredjek conup.sh ady bilen baş skriptini ýerine ýetirip başlamagyny isleýäris.

Şatlyk iň soňky bölümden başlaýar.\Multiuser.target tarapyndan islenjekdigini aýdýar. Şonuň üçin hyzmatymyza mümkinçilik bersek, köp ulanyjy.target.wants bukjasynyň içinde şol hyzmata simwoliki baglanyşyk dörediler! Düşündiňizmi? Bu baglanyşyk öçüriler.

Diňe işlediň we barlaň:

# systemctl enable connection.service

köp ulanyjy.target.wants bukjasyndaky simwoliki baglanyşygyň döredilendigini habar berýär. Barla:

# ls multi-user.target.wants/

Görşüňiz ýaly\connection.service indiki ýüklemäge taýyn, ýöne ilki bilen skript faýlyny döretmeli.

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

Vimiň içine aşakdaky setiri goşuň we saklaň:

#!/bin/bash
nmcli connection up enp0s3

Elbetde, skriptiňiziň başga bir zady ýerine ýetirmegini isleseňiz, ikinji setiriň ýerine islän zadyňyzy ýazyp bilersiňiz.

Mysal üçin,

#!/bin/bash
touch /tmp/testbootfile

/ tmp bukjasynyň içinde bir faýl döreder (diňe hyzmatyňyzyň işleýändigini barlamak üçin).

Şeýle hem, ssenariýany ýerine ýetirip bileris:

# chmod +x conup.sh

Indi taýýar. Indiki ýükleme çenli garaşmak islemeýän bolsaňyz (eýýäm işledilen) häzirki sessiýa ýazmak üçin hyzmaty başlap bileris:

# systemctl start connection.service

Voila! Baglanyşygym işleýär we işleýär!

Eger işleýşini barlamak üçin skriptiň içinde\touch/tmp/testbootfile buýrugyny ýazmagy saýlasaňyz, bu faýly/tmp bukjasynyň içinde görersiňiz.

Çekiş wagtynda haýsy hyzmatlaryň, isleýänleriň, nyşanlaryň we işleýiş skriptleriniň bardygyny anyklamaga kömek eder diýip umyt edýärin.