Okwu Mmalite
Mgbe ị na-emepe emepe maka Linux, ọrụ nke ịmepụta edemede mmekọrịta nke a na-eme mgbe agbanyere ma ọ bụ mechie usoro na-ebilite. Na sistemụ V nke a dị mfe, mana na sistemu ọ na-eme mgbanwe. Mana ọ nwere ike ịnwe oge nke ya.
Gịnị mere anyị kwesịrị iche iche?
A na-edekarị ya na ebumnuche na-arụ ọrụ dị ka ihe analog nke runlevel na sistemụ V-init. Ekwetaghị m n'ezie. Enwere ọtụtụ n'ime ha ma ị nwere ike kewaa ngwungwu n'ime otu yana, dịka ọmụmaatụ, malite otu ọrụ na otu iwu wee rụọ ọrụ ndị ọzọ. Ọzọkwa, ha enweghị ndị isi, ọ bụ naanị ndabere.
Ọmụmaatụ nke ebumnuche mgbe enyere ya (nleba anya njirimara) yana edemede mmekọrịta na-agba ọsọ
Nkọwa nke ebumnuche n'onwe ya:
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
Ebumnuche a ga-amalite mgbe arụ ọrụ multi-user.target wee kpọọ installer.service. Agbanyeghị, enwere ike ịnwe ọtụtụ ọrụ dị otú 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
N'ikpeazụ, ihe atụ nke script a na-egbu:
#!/bin/bash
# Переходим в tty3
chvt 3
echo "Install, y/n ?"
read user_answer
Ihe kachasị mkpa bụ ịhọrọ final.target - ebumnuche nke usoro ahụ kwesịrị ịbịarute na mmalite. N'oge usoro mmalite, systemd ga-agafe ihe ndabere wee malite ihe niile ọ chọrọ.
Enwere ụzọ dị iche iche ịhọrọ final.target, ejiri m nhọrọ loader maka nke a.
Mwepụta ikpeazụ dị ka nke a:
- The bootloader na-amalite
- Bootloader na-amalite ịmalite ngwa ngwa site na ịgafe njedebe ikpeazụ.target
- Sistemu na-amalite mmalite sistemụ. Na-aga na installer.target ma ọ bụ work.target site na basic.target site na ndabere ha (dịka ọmụmaatụ, multi-user.target). Nke ikpeazụ na-eweta sistemụ na-arụ ọrụ na ọnọdụ achọrọ.
Na-akwado ngwa ngwa maka mmalite
Mgbe ị na-eke firmware, ọrụ ahụ na-ebilite mgbe niile nke iweghachi steeti sistemụ na mmalite na ịchekwa ya mgbe emechiri. Steeti pụtara faịlụ nhazi, mkpofu nchekwa data, ntọala interface, wdg.
Sistemu na-agba usoro n'otu ebumnuche n'otu oge. Enwere ndabere na-enye gị ohere ikpebi usoro mmalite nke edemede.
Kedu ka ọ si arụ ọrụ na ọrụ m (
- Usoro na-amalite
- A na-ewepụta ọrụ settings_restore.Ọ na-enyocha ọnụnọ nke faịlụ settings.txt na ngalaba data. Ọ bụrụ na ọ nọghị, mgbe ahụ, a na-edobe faịlụ nrụtụ aka n'ọnọdụ ya, na-esote, eweghachite ntọala sistemụ:
- paswọọdụ nchịkwa
- aha nnabata,
- mpaghara oge
- mpaghara
- Na-ekpebi ma a na-eji mgbasa ozi niile. Site na ndabara, nha onyonyo dị obere - maka ịdị mfe nke nnomi na ịdekọ na mgbasa ozi. Na mmalite, ọ na-enyocha iji hụ ma ọ ka nwere ohere ejighi ya. Ọ bụrụ na ọ dị, a na-ekewa diski ahụ.
- Na-emepụta igwe-id site na adreesị MAC. Nke a dị mkpa maka ịnweta otu adreesị site na DHCP
- Ntọala netwọkụ
- Na-amachi nha ndekọ
- A na-akwado draịva mpụga maka ọrụ (ọ bụrụ na agbanyere nhọrọ kwekọrọ na draịvụ ahụ dị ọhụrụ)
- Malite postgresq
- Ọrụ eweghachi na-amalite. Ọ dị mkpa iji dozie zabbix n'onwe ya na nchekwa data ya:
- Na-enyocha ma enweelarị nchekwa data zabbix. Ọ bụrụ na ọ bụghị, a na-emepụta ya site na mkpofu mmalite (gụnyere zabbix)
- a na-emepụta ndepụta nke mpaghara oge (chọrọ igosi ha na ntanetị weebụ)
- Achọtara IP dị ugbu a, a na-egosipụta ya na mbipụta (oku ịbanye na njikwa)
- Akwụkwọ ịkpọ òkù a na-agbanwe - nkebi ahịrịokwu ahụ dị njikere ịrụ ọrụ pụtara
- Firmware adịla njikere maka ojiji
Faịlụ ọrụ dị mkpa, ha bụ ndị na-edozi usoro mmalite ha
[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
Dịka ị na-ahụ, etinyere m ndabere ka edemede m wee rụọ ọrụ mbụ, naanị mgbe ahụ netwọk ga-arịgo na DBMS ga-amalite.
Na nke abụọ ọrụ (zabbix nkwadebe)
#!/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
Ọ dị ntakịrị mgbagwoju anya ebe a. Mwepụta ahụ dịkwa na multi-user.target, mana MGBE ịmalitere postgresql DBMS na ntọala m_restore. Mana tupu ịmalite ọrụ zabbix.
Ọrụ ngụ oge maka logrotate
Systemd nwere ike dochie CRON. Kwuonụ okwu. Ọzọkwa, izi ezi abụghị ruo nkeji, ma ruo nke abụọ (gịnị ma ọ bụrụ na ọ dị mkpa) Ma ọ bụ ị nwere ike ịmepụta oge na-enweghị atụ, nke a na-akpọ site na oge nkwụsị site na ihe omume.
Ọ bụ ngụ oge nke na-agụ oge site na mmalite igwe m kere.
Nke a ga-achọ faịlụ 2
logrotateTimer.service - nkọwa nke ọrụ ahụ n'ezie:
[Unit]
Description=run logrotate
[Service]
ExecStart=logrotate /etc/logrotate.conf
TimeoutSec=300
Ọ dị mfe - nkọwa nke iwu mmalite.
Faịlụ nke abụọ logrotateTimer.timer bụ ebe ngụ oge na-arụ ọrụ:
[Unit]
Description=Run logrotate
[Timer]
OnBootSec=15min
OnUnitActiveSec=15min
[Install]
WantedBy=timers.target
Kedu ihe dị ebe a:
- nkọwa ngụ oge
- Oge mbido mbụ, malite na buut sistemụ
- oge nke n'ihu mmalite
- Ndabere na ọrụ ngụ oge. N'ezie, nke a bụ eriri na-eme ngụ oge
Edemede mmekọrịta mgbe ị na-emechi yana ebumnuche nkwụsị gị
Na mmepe ọzọ, m ga-eme ụdị mgbagwoju anya nke ịgbanyụ igwe - site na ebumnuche nke m, iji mee ọtụtụ omume. A na-atụkarị aro ka ịmepụta ọrụ onehot na nhọrọ RemainAfterExit, mana nke a na-egbochi gị ịmepụta edemede mmekọrịta.
Mana nke bụ eziokwu bụ na a na-egbu iwu ndị ExecOnStop ewepụta na mpụga TTY! Ọ dị mfe ịlele - mado iwu tty wee chekwaa mmepụta ya.
Ya mere, etinyere m mmechi ahụ site na ebumnuche m. Anaghị m ekwu na m bụ 100% ziri ezi, mana ọ na-arụ ọrụ!
Otu esi eme ya (n'ozuzu ya):
Emepụtara m target my_shutdown.target, nke na-adabereghị na onye ọ bụla:
my_shutdown. target
[Unit]
Description=my shutdown
AllowIsolate=yes
Wants=my_shutdown.service
Mgbe ị na-aga na ebumnuche a (site na systemctl iche my_shutdwn.target), ọ malitere ọrụ my_shutdown.service, ọrụ ya dị mfe - iji mebie edemede 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
- N'ime edemede a, m na-eme ihe ndị dị mkpa. Ị nwere ike itinye ọtụtụ edemede na ebumnuche maka mgbanwe na ịdị mma:
my_emechi.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
Rịba ama. Iji /tmp/reboot na /tmp/shutdown faịlụ. Ị nweghị ike ịkpọ ebumnuche na parampat. Naanị ọrụ ga-ekwe omume.
Mana m na-eji ebumnuche inwe mgbanwe n'ọrụ yana usoro omume ejirila n'aka.
Otú ọ dị, ihe kasị adọrọ mmasị bịara mgbe e mesịrị. Ekwesịrị ịgbanyụ/malitegharịa igwe a. Ma enwere nhọrọ 2:
- Dochie reboot, mmechi na iwu ndị ọzọ (ha ka bụ symlinks na systemctl) na edemede gị n'ime edemede, gaa my_shutdown.target. Na scripts dị n'ime ebumnuche wee kpọọ systemctl ozugbo, dịka ọmụmaatụ, systemctl reboot
- Nhọrọ dị mfe, mana ahụghị m ya. N'ime oghere niile, akpọla mmechi/reboot/ọzọ, mana kpọọ onye ebumnuche ozugbo na systemctl kewapụ my_shutdown.target.
M họọrọ nke mbụ nhọrọ. Na sistemu, mweghachi (dị ka poweroff) bụ akara na sistemụ.
ls -l /sbin/poweroff
lrwxrwxrwx 1 root root 14 сен 30 18:23 /sbin/poweroff -> /bin/systemctl
Ya mere, ị nwere ike iji ederede nke gị dochie ha:
reboot
#!/bin/sh
touch /tmp/reboot
sudo systemctl isolate my_shutdown.target
fi
isi: www.habr.com