Habayn, qoraallo is dhexgal ah iyo waqti-saarayaal

Habayn, qoraallo is dhexgal ah iyo waqti-saarayaal

Horudhac

Marka la horumarinayo Linux, hawsha abuurista qoraallada is-dhexgalka ee la fuliyo marka nidaamka la shido ama la xiro ayaa soo baxda. Nidaamka V tani way fududayd, laakiin systemd waxay samaynaysaa hagaajin. Laakin waxa ay yeelan kartaa waqtiyo u gaar ah.

Maxaan ugu baahanahay bartilmaameedyo?

Inta badan waxaa loo qoraa in bartilmaameedku uu u adeego sidii analoogga runlevel ee nidaamka V -init. Anigu asal ahaan waan diidanahay. Waxaa jira qaar badan oo iyaga ka mid ah oo waxaad u qaybin kartaa baakadaha kooxo iyo, tusaale ahaan, bilaw koox adeegyo ah oo leh hal amar oo samee ficillo dheeraad ah. Waxaa intaa dheer, ma laha wax kala sareyn, kaliya ku tiirsanaanta.

Tusaalaha bartilmaameedka marka karti loo yeesho ( dulmarka muuqaalka) oo wata qoraal is dhexgalka oo socda

Sharaxaada bartilmaameedka laftiisa:

cat installer.target
[Unit]
Description=My installer
Requires=multi-user.target 
Conflicts=rescue.service rescue.target
After=multi-user.target rescue.service rescue.target 
AllowIsolate=yes
Wants=installer.service

Bartilmaameedkani wuxuu bilaaban doonaa marka multi-user.target la bilaabo oo uu wacayo installer.service. Si kastaba ha ahaatee, waxaa jiri kara adeegyo badan oo noocaas ah.

cat installer.service
[Unit]
# описаниС
Description=installer interactive dialog

[Service]
# Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎ
Type=idle
# Команда запуска - Π²Ρ‹Π·ΠΎΠ² скрипта
ExecStart=/usr/bin/installer.sh
# Π˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ взаимодСйствиС с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Ρ‡Π΅Ρ€Π΅Π· tty3
StandardInput=tty
TTYPath=/dev/tty3
TTYReset=yes
TTYVHangup=yes

[Install]
WantedBy=installer.target

Ugu dambayntiina, tusaale qoraalka la fuliyay:

#!/bin/bash
# ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² tty3
chvt 3
echo "Install, y/n ?"
read user_answer

Waxa ugu muhiimsan waa in la doorto final.target - bartilmaameedka uu nidaamku ku yimaado bilowga. Inta lagu jiro nidaamka bilowga, systemd wuxuu mari doonaa ku tiirsanaanta wuxuuna bilaabayaa wax kasta oo uu u baahan yahay.
Waxaa jira siyaabo kala duwan oo loo doorto final.target, waxaan u isticmaalay ikhtiyaarka xamuulka tan.

Daahfurka ugu dambeeya wuxuu u eg yahay sidan:

  1. Bootloaderku wuu bilaabmayaa
  2. Bootloader-ku wuxuu bilaabaa inuu bilaabo firmware-ka isagoo ka gudbaya heerka final.target
  3. Systemd wuxuu bilaabay inuu bilaabo nidaamka. Si isdaba joog ah u taga installer.target ama work.target laga bilaabo basic.target iyada oo loo marayo ku tiirsanaanta (tusaale, multi-user.target). Dambe wuxuu keenaa nidaamka inuu ku shaqeeyo qaabka la rabo

Diyaarinta firmware-ka si loo bilaabo

Marka la abuurayo firmware, hawshu had iyo jeer waxay soo baxdaa soo celinta nidaamka nidaamka bilowga iyo badbaadinta marka la xiro. Dawladdu waxay ka dhigan tahay faylalka habaynta, kaydka kaydka xogta, goobaha interface, iwm.

Nidaamku wuxuu ku shaqeeyaa isla bartilmaameedka si barbar socda. Waxaa jira ku tiirsanaano kuu oggolaanaya inaad go'aamiso taxanaha bilawga qoraallada.

Sidee uga shaqeysaa mashruucayga ( https://habr.com/ru/post/477008/ https://github.com/skif-web/monitor)

  1. Nidaamku wuu bilaabmayaa
  2. Adeegga settings_restore.waa la bilaabay.Waxay hubisaa joogitaanka Settings.txt faylka qaybta xogta. Haddii aysan jirin, markaas faylka tixraaca ayaa la dhigayaa meeshiisa, marka xigta, nidaamka nidaamka waa la soo celinayaa:
    • furaha maamulaha
    • magaca martida loo yahay
    • aagga waqtiga
    • deegaanka
    • Wuxuu go'aamiyaa in dhammaan warbaahinta la isticmaalay iyo in kale. Sida caadiga ah, cabbirka sawirku wuu yar yahay - si ay u fududaato koobiyeynta iyo duubista warbaahinta. Bilawga, waxay hubisaa inay wali jirto meel aan la isticmaalin. Haddii ay jirto, saxanka waa la kala qaybiyaa.
    • Soo saarista mishiinka-id ka ciwaanka MAC Tani waxay muhiim u tahay helitaanka isla cinwaanka DHCP
    • Dejinta shabakada
    • Waxay xaddidaysaa cabbirka geedaha
    • Dareewalka dibadda ayaa loo diyaarinayaa shaqo (haddii ikhtiyaarka u dhigma la awoodo oo darawalku cusub yahay)
  3. Bilow postgresq
  4. Adeegga soo celinta ayaa bilaabmaya. Waxaa loo baahan yahay si loo diyaariyo zabbix lafteeda iyo xog-ururinteeda:
    • Wuxuu hubiyaa in uu horeba u jiray xogta zabbix Haddaysan ahayn, waxa laga abuuray qashin-qubka bilowga (oo ay ku jirto zabbix)
    • liis aagagga wakhtiga ayaa la abuuray (loo baahan yahay in lagu muujiyo interface interneedka)
    • IP-ga hadda jira waa la helay, waxaa lagu soo bandhigay arrin (casumaad lagu soo galo console-ka)
  5. Martiqaadku wuu is beddelaa - weedha shaqo diyaar u ah ayaa soo muuqata
  6. Firmware-ku waa diyaar in la isticmaalo

Faylasha adeegyadu waa muhiim, waa kuwa dejinaya isku xigxiga bilaabidooda

[Unit]
Description=restore system settings
Before=network.service prepare.service postgresql.service systemd-networkd.service systemd-resolved.service

[Service]
Type=oneshot
ExecStart=/usr/bin/settings_restore.sh

[Install]
WantedBy=multi-user.target

Sida aad arki karto, waxaan rakibay ku-tiirsanaanta si qoraalkaygu marka hore u shaqeeyo, ka dibna kaliya ayaa shabakadu kor u kici doontaa oo DBMS ayaa bilaabi doonta.

Iyo adeegga labaad (diyaarinta zabbix)

#!/bin/sh
[Unit]
Description=monitor prepare system
After=postgresql.service settings_restore.service
Before=zabbix-server.service zabbix-agent.service

[Service]
Type=oneshot
ExecStart=/usr/bin/prepare.sh

[Install]
WantedBy=multi-user.target

Way ka yara dhib badan tahay halkan Laakin KA HOR inta aan la bilaabin adeegyada zabbix.

Adeegga saacada ee logrotate

Systemd wuxuu bedeli karaa CRON. Dhab ahaantii. Intaa waxaa dheer, saxnimadu maaha ilaa daqiiqada, laakiin ilaa tan labaad (ka waran haddii loo baahdo) Ama waxaad samayn kartaa saacad keli ah, oo loo yaqaan waqti ka baxsan dhacdo.
Waxa ay ahayd saacada keli ah ee tiriya wakhtiga bilawga mishiinka aan abuuray.
Tani waxay u baahan doontaa 2 fayl
logrotateTimer.service - sharaxaadda dhabta ah ee adeega:

[Unit]
Description=run logrotate

[Service]
ExecStart=logrotate /etc/logrotate.conf
TimeoutSec=300

Way fududahay - sharaxaadda amarka bilaabista.
Faylka labaad logrotateTimer.timer waa meesha ay saacaduhu shaqeeyaan:

[Unit]
Description=Run logrotate

[Timer]
OnBootSec=15min
OnUnitActiveSec=15min

[Install]
WantedBy=timers.target

Waa maxay halkan:

  • tilmaanta saacada
  • Waqtiga bilawga koowaad, laga bilaabo nidaamka boot
  • muddada bilaabista dheeraadka ah
  • Ku-tiirsanaanta adeegga saacadda, dhab ahaantii, tani waa xadhigga sameeya saacad-sameeyaha

Qoraal is-dhexgal ah marka la xirayo iyo bartilmaameedkaaga xiritaanka

Horumar kale, waxaan ku qasbanaaday in aan sameeyo nooc aad u adag oo ah daminta mishiinka - iyada oo loo marayo bartilmaameedkayga, si aan u sameeyo waxqabadyo badan. Badanaa waxaa lagu talinayaa in la abuuro adeeg onehot leh ikhtiyaarka RemainAfterExit, laakiin tani waxay kaa ilaalinaysaa inaad abuurto qoraal is dhexgal ah.

Laakiin xaqiiqadu waxay tahay in amarrada uu bilaabay ikhtiyaarka ExecOnStop lagu fuliyo meel ka baxsan TTY! Way fududahay in la hubiyo - ku dheji amarka tty oo badbaadi wax soo saarkiisa.

Sidaa darteed, waxaan hirgaliyay xidhitaanka iyada oo loo marayo bartilmaameedkaygii. Ma sheeganayo inaan 100% sax ahay, laakiin way shaqeysaa!
Sida loo sameeyay (si guud ahaan):
Waxaan sameeyay bartilmaameed my_shutdown.target, kaas oo aan cidna ku xidhnayn:
my_xitdown. bartilmaameed

[Unit]
Description=my shutdown
AllowIsolate=yes
Wants=my_shutdown.service 

Markaad aado bartilmaameedkan (iyada oo loo sii marayo systemctl go'doomin my_shutdwn.target), waxay bilawday adeegga my_shutdown.adeegga, shaqadeedu waa mid fudud - si loo fuliyo qoraalka my_shutdown.sh:

[Unit]
Description=MY shutdown

[Service]
Type=oneshot
ExecStart=/usr/bin/my_shutdown.sh
StandardInput=tty
TTYPath=/dev/tty3
TTYReset=yes
TTYVHangup=yes

WantedBy=my_shutdown.target

  • Qoraalkan dhexdiisa waxaan ku sameeyaa ficilada lagama maarmaanka ah. Waxaad ku dari kartaa qoraallo badan bartilmaameedka dabacsanaanta iyo ku habboonaanta:

xiritaankayga.sh

#!/bin/bash --login
if [ -f /tmp/reboot ];then
    command="systemctl reboot"
elif [ -f /tmp/shutdown ]; then
    command="systemctl poweroff"
fi
#Π’ΠΎΡ‚ здСсь Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹
#НапримСр, cp /home/user/data.txt /storage/user/
    $command

Ogow. Isticmaalka /tmp/reboot iyo /tmp/shutdown faylasha. Ma wici kartid bartilmaameedka. Kaliya adeeg ayaa suurtagal ah.

Laakiin waxaan u adeegsadaa bartilmaameedka si aan u yeesho dabacsanaan xagga shaqada iyo hab-dhaqannada la dammaanad qaaday.

Si kastaba ha ahaatee, waxa ugu xiisaha badnaa ayaa yimid markii dambe. Mashiinku wuxuu u baahan yahay in la damiyo/dib u bilaabo. Waxaana jira 2 doorasho:

  • Ku beddel rebootka, xidhidhiyaha iyo amarada kale (waxay wali calaamad u yihiin systemctl) qoraalkaaga. Gudaha qoraalka, aad my_shutdown.target. Iyo qoraallada ku jira bartilmaameedka ka dib si toos ah ugu wac systemctl, tusaale ahaan, systemctl reboot
  • Doorasho ka fudud, laakiin ma jecli. Dhammaan is-dhex-galka, ha wicin xirid/dib-u-boot/mid kale, laakiin si toos ah u wac systemctl-ka-go'doominta my_shutdown.target

Waxaan doortay doorashada koowaad. In systemd, reboot (sida poweroff) waa calaamado la xidhiidha systemd.

ls -l /sbin/poweroff 
lrwxrwxrwx 1 root root 14 сСн 30 18:23 /sbin/poweroff -> /bin/systemctl

Sidaa darteed, waxaad ku beddeli kartaa qoraalladaada:
dib u bilow

#!/bin/sh
    touch /tmp/reboot
    sudo systemctl isolate my_shutdown.target
fi

Source: www.habr.com

Add a comment