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:
- Bootloader e qala
- Bootloader e qala ho qala firmware ka ho fetisa parameter ea ho qetela
- 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 (
- Tsamaiso e qala
- 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)
- Qala postgresq
- 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)
- Memo e ea fetoha - ho hlaha poleloana "Ready to work".
- 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