Lingoliloeng tse hlophisitsoeng, tse sebetsanang le linako

Lingoliloeng tse hlophisitsoeng, tse sebetsanang le linako

Selelekela

Ha ho etsoa bakeng sa Linux, mosebetsi oa ho theha mangolo a sebetsanang a etsoang ha tsamaiso e buletsoe kapa e koetsoe oa hlaha. Ho sistimi ea V sena se ne se le bonolo, empa ka systemd e etsa liphetoho. Empa e ka ba le linako tsa eona.

Hobaneng re hloka liphofu?

Hangata ho ngotsoe hore sepheo se sebetsa e le analogue ea runlevel ho system V -init. Ha e le hantle ha ke lumellane. Ho na le tse ling tsa tsona 'me u ka arola liphutheloana ka lihlopha' me, ka mohlala, qala sehlopha sa litšebeletso ka taelo e le 'ngoe' me u etse liketso tse eketsehileng. Ho feta moo, ha ba na bolaoli, ke ba itšetlehileng feela.

Mohlala oa sepheo ha o lumelletsoe (kakaretso ea likarolo) ka mongolo o sebetsang

Tlhaloso ea sepheo ka bosona:

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

Sepheo sena se tla qala ha multi-user.target e qalisoa 'me e letsetsa installer.service. Leha ho le joalo, ho ka ba le litšebeletso tse ngata tse joalo.

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

'Me qetellong, mohlala oa script o ntseng o etsoa:

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

Ntho ea bohlokoa ka ho fetisisa ke ho khetha ho qetela. target - target eo tsamaiso e lokelang ho fihla ho eona ha e qala. Nakong ea ts'ebetso ea ho qala, systemd e tla feta ho its'etleha ebe e qala tsohle tseo e li hlokang.
Ho na le mekhoa e fapaneng ea ho khetha sepheo sa ho qetela, ke sebelisitse khetho ea loader bakeng sa sena.

Phetolelo ea ho qetela e shebahala tjena:

  1. Bootloader e qala
  2. Bootloader e qala ho qala firmware ka ho fetisa parameter ea ho qetela
  3. Systemd e qala ho qala sistimi. Ka tatellano e ea ho installer.target kapa work.tharget ho tloha motheong.sephethiloeng ka ho its'etleha ha bona (mohlala, sepheo sa basebelisi ba bangata). E qetellang e tlisa tsamaiso ho sebetsa ka mokhoa o lakatsehang

Ho lokisa firmware bakeng sa ho qala

Ha u theha firmware, mosebetsi o lula o hlaha oa ho khutlisetsa boemo ba sistimi ha o qala le ho e boloka ha o koala. State e bolela lifaele tsa tlhophiso, lits'oants'o tsa database, litlhophiso tsa sebopeho, joalo-joalo.

Systemd e tsamaisa lits'ebetso ka sepheo se le seng ka ho bapisa. Ho na le litšepe tse u lumellang hore u tsebe tatellano ea ho qala ea mangolo.

E sebetsa joang morerong oa ka ( https://habr.com/ru/post/477008/ https://github.com/skif-web/monitor)

  1. Tsamaiso e qala
  2. Tshebeletso ya setting_restore.service e qadile.E lekola boteng ba disetting.txt faele karolong ya data. Haeba e le sieo, faele ea referense e behiloe sebakeng sa eona.
    • password ea motsamaisi
    • lebitso la moamoheli,
    • sebaka sa nako
    • sebaka
    • E etsa qeto ea hore na mecha eohle ea litaba e sebelisoa. Ka ho sa feleng, boholo ba setšoantšo bo nyane - bakeng sa boiketlo ba ho kopitsa le ho rekota ho mecha ea litaba. Ha e qala, e ea hlahloba ho bona hore na ho sa na le sebaka se sa sebelisoeng. Haeba ho na le, disk e tla aroloa.
    • E hlahisa mochini-id ho tsoa atereseng ea MAC. Sena se bohlokoa bakeng sa ho fumana aterese e tšoanang ka DHCP
    • Litlhophiso tsa marang-rang
    • E fokotsa boholo ba likutu
    • Koloi ea kantle e ntse e lokisetsoa mosebetsi (haeba khetho e lumellanang e nolofalitsoe mme drive e ncha)
  3. Qala postgresq
  4. Tshebeletso ya ho tsosolosa e qala. Hoa hlokahala ho itokisetsa zabbix ka boeona le database ea eona:
    • E hlahloba hore na ho se ho na le database ea zabbix. Haeba ho se joalo, e entsoe ka ho qala ho lahlela (ho kenyelelitsoe le zabbix)
    • lethathamo la libaka tsa nako li entsoe (tse hlokahalang ho li bonts'a sebopeho sa webo)
    • IP ea hajoale e fumaneha, e bonts'oa ka taba (memo ea ho kena ho console)
  5. Memo e ea fetoha - ho hlaha poleloana "Ready to work".
  6. Firmware e se e loketse ho sebelisoa

Lifaele tsa ts'ebeletso li bohlokoa, ke tsona tse behang tatellano ea ho qala ha tsona

[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

Joalokaha u bona, ke kentse litšepiso e le hore script ea ka e ka qala ho sebetsa, 'me feela ka mor'a moo marang-rang a tla nyoloha' me DBMS e tla qala.

Le tšebeletso ea bobeli (zabbix lokisetsa)

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

Ho rarahane ho feta mona. Ho qala hape ho ho basebelisi ba bangata, empa KA MOR'A ho qala postgresql DBMS le setting_restore ea ka. Empa PELE ho qala lits'ebeletso tsa zabbix.

Tšebeletso ea nako bakeng sa logrotate

Systemd e ka nka sebaka sa CRON. Ka botebo. Ho feta moo, ho nepahala ha hoa fihla motsotsong, empa ho fihlela ho ea bobeli (ho thoe'ng haeba ho hlokahala) Kapa u ka etsa nako ea monotonous, e bitsoang ke nako ea ho tsoa ketsahalong.
E ne e le sebali sa nako se monotonous se balang nako ho tloha qalong ea mochini oo ke o entseng.
Sena se tla hloka lifaele tse 2
logrotateTimer.service - tlhaloso ea sebele ea tšebeletso:

[Unit]
Description=run logrotate

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

Ho bonolo - tlhaloso ea taelo ea ho qala.
Faele ea bobeli ea logrotateTimer.timer ke moo li-timers li sebetsang teng:

[Unit]
Description=Run logrotate

[Timer]
OnBootSec=15min
OnUnitActiveSec=15min

[Install]
WantedBy=timers.target

Ke eng mona:

  • tlhaloso ea nako
  • Nako ea pele ea ho qala, ho qala ka boot system
  • nako ea tlhahiso e eketsehileng
  • Ho itšetleha ka tšebeletso ea nako. Ha e le hantle, ena ke khoele e etsang nako

Script e sebetsang ha o koala le sepheo sa hau sa ho koala

Nts'etsopele e 'ngoe, ke ile ka tlameha ho etsa mofuta o rarahaneng oa ho tima mochini - ka sepheo sa ka, e le hore ke etse liketso tse ngata. Hangata ho khothaletsoa ho theha ts'ebeletso e le 'ngoe ka khetho ea RemainAfterExit, empa sena se u thibela ho theha mongolo o sebetsang.

Empa 'nete ke hore litaelo tse hlahisitsoeng ke ExecOnStop khetho li etsoa ka ntle ho TTY! Ho bonolo ho hlahloba - beha taelo ea tty 'me u boloke tlhahiso ea eona.

Ka hona, ke ile ka kenya ts'ebetso ea ho koala ka sepheo sa ka. Ha ke ipolele hore ke nepahetse 100%, empa ea sebetsa!
E entsoe joang (ka kakaretso):
Ke thehile target my_shutdown.target, e neng e sa itšetlehe ka mang kapa mang:
pheello_ya_ka

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

Ha u ea ho sepheo sena (ka systemctl isolate my_shutdwn.target), e ile ea qala tšebeletso ea my_shutdown.service, eo mosebetsi oa eona o leng bonolo - ho phethahatsa 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

  • Ka har'a script ena ke etsa liketso tse hlokahalang. O ka eketsa mangolo a mangata ho sepheo sa ho feto-fetoha le maemo le bonolo:

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

Hlokomela. Ho sebelisa lifaele tsa /tmp/reboot le /tmp/shutdown. Ha o khone ho letsetsa sepheo ka li-parameter. Ke tšebeletso feela e ka khonehang.

Empa ke sebelisa target ho ba le maemo a feto-fetohang mosebetsing le taelo e tiisitsoeng ea liketso.

Leha ho le joalo, ntho e thahasellisang ka ho fetisisa e ile ea tla hamorao. Mochine o hloka ho tima / ho qala hape. Mme ho na le likhetho tse 2:

  • Kenya sebaka sa ho qala bocha, ho koala le litaelo tse ling (e ntse e le li-symlink ho systemctl) ka mongolo oa hau. Ka har'a mongolo, e-ea ho my_shutdown.target. 'Me mangolo a ka hare ho sepheo ebe o letsetsa systemctl ka ho toba, mohlala, systemctl reboot
  • Khetho e bonolo, empa ha ke e rate. Likarolong tsohle tsa marang-rang, u se ke ua letsetsa shutdown/reboot/tse ling, empa ka ho toba letsetsa target systemctl isolate my_shutdown.target.

Ke khethile khetho ea pele. Ho systemd, reboot (joaloka poweroff) ke li-symlink ho systemd.

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

Ka hona, o ka li nkela sebaka ka lingoloa tsa hau:
logon

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

Source: www.habr.com

Eketsa ka tlhaloso