Systemd, tusitusiga fesoʻotaʻi ma taimi

Systemd, tusitusiga fesoʻotaʻi ma taimi

Faatomuaga

Pe a atiaʻe mo Linux, o le galuega o le fatuina o tusitusiga fefaʻatauaʻiga e faʻatinoina pe a faʻaalia pe tapuni le polokalama. I le faiga V sa faigofie lenei mea, ae o le systemd e faia ai fetuunaiga. Ae e mafai ona i ai ona lava taimi.

Aisea tatou te manaʻomia ai faʻamoemoega?

E masani ona tusia o le taulaiga e avea o se faʻatusa o le runlevel i le faiga V -init. Ou te matua le ioe. E tele atu i latou ma e mafai ona e vaevae afifi i vaega ma, mo se faʻataʻitaʻiga, faʻalauiloa se vaega o auʻaunaga ma le tasi faʻatonuga ma faia ni gaioiga faʻaopoopo. E le gata i lea, e leai ni a latou fa'atonuga, na'o fa'alagolago.

Fa'ata'ita'iga o le fa'amoemoe pe a fa'agaoioi (va'aiga lautele) fa'atasi ai ma fa'amatalaga feso'ota'i

Fa'amatalaga o le sini lava ia:

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

O le a amata lenei sini pe a faʻalauiloa multi-user.target ma valaʻau installer.service. Ae ui i lea, atonu e tele naua auaunaga.

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

Ma le mea mulimuli, o se faʻataʻitaʻiga o le tusitusiga o loʻo faʻatinoina:

#!/bin/bash
# Переходим в tty3
chvt 3
echo "Install, y/n ?"
read user_answer

O le mea pito sili ona taua o le filifilia lea o le final.target - le faʻamoemoe e tatau ona oʻo mai ai le faiga ile amataga. I le faagasologa o le amataga, o le a alu le systemd i faʻalagolago ma faʻalauiloa mea uma e manaʻomia.
E i ai auala eseese e filifili ai final.target, na ou faʻaaogaina le filifiliga o le loader mo lenei.

O le fa'alauiloaina mulimuli e pei o lenei:

  1. E amata le bootloader
  2. O le bootloader e amata ona faʻalauiloa le firmware e ala i le pasia o le final.target parameter
  3. Systemd amata amata le faiga. Fa'asolosolo alu ile installer.target po'o le work.target mai basic.target e ala i latou fa'alagolago (mo se fa'ata'ita'iga, multi-user.target). O le mea mulimuli e aumaia le faiga e galue i le tulaga manaʻomia

Saunia le firmware mo le tatalaina

Pe a fatuina le firmware, e masani lava ona tulaʻi mai le galuega o le toe faʻaleleia o le tulaga o le polokalama i le amataga ma sefe pe a tapuni. State o lona uiga o faila fetuutuunai, fa'amaumauga tu'ufa'atasiga, fa'aoga fa'aoga, ma isi.

Systemd e fa'agasolo fa'agasologa i le fa'amoemoe lava e tasi i fa'atasi. E iai fa'alagolago e fa'ataga ai oe e fuafua le fa'asologa amata o tusitusiga.

E fa'afefea ona aoga i la'u galuega ( https://habr.com/ru/post/477008/ https://github.com/skif-web/monitor)

  1. E amata le faiga
  2. Ua fa'alauiloa le 'au'aunaga settings_restore.service. E siaki ai le iai o le faila settings.txt i le vaega fa'amaumauga. Afai e le o iai, ona tuʻuina lea o se faila faʻasino i lona tulaga.
    • pule upu faataga
    • igoa talimalo,
    • sone taimi
    • nu'u
    • Fuafua pe o fa'aogaina uma ala o faasalalauga. Ona o le faaletonu, e la'ititi le tele o ata - mo le faigofie o le kopiina ma le pueina i le aufaasālalau. I le amataga, e siaki pe o iai pea avanoa e le faʻaaogaina. Afai ei ai, o le disk ua toe vaelua.
    • Fausia masini-id mai le tuatusi MAC. E taua tele lenei mo le mauaina o le tuatusi tutusa e ala i le DHCP
    • Fa'atonuga feso'ota'iga
    • Fa'atapula'a le tele o ogalaau
    • O loʻo sauni le taʻavale fafo mo le galuega (pe a fai e mafai le filifiliga talafeagai ma e fou le taʻavale)
  3. Amata postgresq
  4. E amata le auaunaga toe fa'afo'isia. E manaʻomia le saunia o le zabbix lava ia ma lona faʻamaumauga:
    • Siaki pe o iai se faʻamaumauga o zabbix. Afai e leai, e faia mai le amataga o le lafoaia (e aofia ai ma le zabbix)
    • faia se lisi o sone taimi (manaomia e fa'aali i latou i luga o le upega tafa'ilagi)
    • O loʻo maua le IP o loʻo iai nei, o loʻo faʻaalia i le mataupu (valaaulia e ulufale i totonu i le faʻamafanafanaga)
  5. Ua suia le valaaulia - ua aliali mai le fuaitau Sauni e galue
  6. Ua sauni le firmware mo le fa'aoga

O faila faila e taua, o latou ia e faʻatulagaina le faʻasologa o la latou faʻalauiloa

[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

E pei ona e vaʻaia, na ou faʻapipiʻi faʻalagolago ina ia mafai ona galue muamua laʻu tusitusiga, ona alu aʻe lea o le fesoʻotaʻiga ma amata le DBMS.

Ma le sauniga lona lua (zabbix preparation)

#!/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

E fai si lavelave laititi iinei.O le fa'alauiloaina foi o lo'o i le multi-user.target, ae ONA amata le postgresql DBMS ma la'u seti_restore. Ae AE LEʻI amataina auaunaga zabbix.

Auaunaga taimi mo le logrotate

Systemd e mafai ona sui CRON. Mata'utia. E le gata i lea, o le saʻo e leʻo oʻo i le minute, ae oʻo i le lona lua (pe a manaʻomia) Pe mafai foi ona e fatuina se timer monotonous, e taʻua e se taimi malolo mai se mea na tupu.
O le taimi fa'aletonu e faitau ai le taimi mai le amataga o le masini na ou faia.
Ole mea lea ole a mana'omia 2 faila
logrotateTimer.service - o le faʻamatalaga moni o le tautua:

[Unit]
Description=run logrotate

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

E faigofie - faʻamatalaga o le faʻatonuga faʻalauiloa.
O le faila lona lua logrotateTimer.timer o loʻo galue ai taimi:

[Unit]
Description=Run logrotate

[Timer]
OnBootSec=15min
OnUnitActiveSec=15min

[Install]
WantedBy=timers.target

O a mea iinei:

  • fa'amatalaga taimi
  • Taimi amata muamua, amata mai le faiga fa'avae
  • vaitaimi o isi faalauiloa
  • Fa'alagolago ile tautua taimi.O le mea moni, ole manoa lea e fai ai le taimi

Fa'amatalaga feso'ota'i pe a tapuni ma lau sini tapuni

I se isi atinaʻe, e tatau ona ou faia se faʻafitauli sili atu ona faigata o le tapeina o le masini - e ala i laʻu lava sini, ina ia mafai ai ona faia le tele o gaioiga. E masani ona fautuaina le faia o se 'au'aunaga e tasi ma le RemainAfterExit filifiliga, ae o lenei mea e taofia ai oe mai le fatuina o se tusitusiga fesoʻotaʻi.

Ae o le mea moni o poloaiga na faʻalauiloaina e le ExecOnStop filifiliga e faʻatinoina i fafo atu o le TTY! E faigofie ona siaki - faʻapipiʻi le tty command ma faʻasaoina lona gaioiga.

O le mea lea, na ou faʻatinoina le tapunia e ala i laʻu sini. Ou te le fai atu e 100% saʻo, ae e aoga!
Na fa'apefea ona fai (i tulaga lautele):
Na ou faia se sini my_shutdown.target, e leʻi faʻalagolago i se tasi:
my_shutdown.target

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

A alu i lenei sini (e ala i le systemctl isolate my_shutdwn.target), na ia faʻalauiloaina le my_shutdown.service service, o le galuega e faigofie - e faʻatino ai le my_shutdown.sh script:

[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

  • I totonu o lenei tusitusiga ou te faia gaioiga talafeagai. E mafai ona e faʻaopoopoina le tele o tusitusiga i le faʻamoemoe mo le fetuutuunai ma le faigofie:

my_shutdown.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

Manatua. Fa'aaoga le /tmp/reboot ma /tmp/shutdown faila. E le mafai ona e vala'au le sini fa'atasi ma tapula'a. Na'o le tautua e mafai.

Ae ou te faʻaogaina le faʻamoemoe e maua ai le fetuutuunai i le galuega ma se faʻatonuga faʻamaonia o gaioiga.

Ae peitai, o le mea e sili ona manaia na oo mai mulimuli ane. E tatau ona tape/toe fa'aola le masini. Ma e 2 filifiliga:

  • Suia le toe faʻafouina, tapuni ma isi faʻatonuga (o loʻo i ai pea i latou symlinks i systemctl) ma lau tusitusiga. I totonu o le tusitusiga, alu i my_shutdown.target. Ma o tusitusiga i totonu o le taulaiga ona valaʻau saʻo lea systemctl, mo se faʻataʻitaʻiga, systemctl reboot
  • O se filifiliga faigofie, ae ou te le fiafia i ai. I fesoʻotaʻiga uma, aua le valaʻau tapuni / toe faʻafouina / isi, ae valaʻau saʻo le sini systemctl vavae ese my_shutdown.target

Sa ou filifilia le filifiliga muamua. I le systemd, toe faʻafouina (pei o le poweroff) o symlinks i systemd.

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

O le mea lea, e mafai ona e suia i latou i au lava tusitusiga:
toe toe fai

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

puna: www.habr.com

Faaopoopo i ai se faamatalaga