Hōʻike
I ka hoʻomohala ʻana no Linux, ʻo ka hana o ka hana ʻana i nā palapala pili i hana ʻia i ka wā e hoʻā a pani ʻia ka ʻōnaehana. Ma ka ʻōnaehana V ua maʻalahi kēia, akā me ka systemd hana ia i nā hoʻoponopono. Akā hiki iā ia ke loaʻa i kāna mau manawa ponoʻī.
No ke aha mākou e pono ai i nā pahuhopu?
Ua kākau pinepine ʻia e lawelawe ana ka pahuhopu ma ke ʻano he analogue o runlevel i ka ʻōnaehana V -init. ʻAʻole wau e ʻae. Nui aʻe o lākou a hiki iā ʻoe ke hoʻokaʻawale i nā pūʻulu i nā pūʻulu a, no ka laʻana, hoʻomaka i kahi hui o nā lawelawe me hoʻokahi kauoha a hana i nā hana hou. Eia kekahi, ʻaʻohe o lākou hierarchy, hilinaʻi wale nō.
Ka laʻana o ka pahu hopu i ka wā i hoʻohana ʻia (nā hiʻohiʻona hiʻohiʻona) me ka holo ʻana i ka palapala pili
ʻO ka wehewehe ʻana o ka pahuhopu ponoʻī:
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
E hoʻomaka ana kēia pahuhopu i ka wā e hoʻomaka ʻia ai ka multi-user.target a kāhea iā installer.service. Eia nō naʻe, aia kekahi mau lawelawe like.
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
A ʻo ka hope, he laʻana o ka palapala e hoʻokō ʻia nei:
#!/bin/bash
# Переходим в tty3
chvt 3
echo "Install, y/n ?"
read user_answer
ʻO ka mea nui loa, ʻo ke koho ʻana i ka final.target - ka pahuhopu e hōʻea ai ka ʻōnaehana i ka hoʻomaka. I ka wā o ka hoʻomaka ʻana, e hele ʻo systemd i nā hilinaʻi a hoʻomaka i nā mea āpau e pono ai.
Aia nāʻano likeʻole e koho ai i ka final.target, ua hoʻohana au i ka koho loader no kēia.
ʻO ka hoʻomaka hope e like me kēia:
- Hoʻomaka ka bootloader
- Hoʻomaka ka bootloader e hoʻomaka i ka firmware ma ke kau ʻana i ka palena hope.target
- Hoʻomaka ʻo Systemd e hoʻomaka i ka ʻōnaehana. E hele ana i ka installer.target a i ʻole work.target mai basic.target ma o ko lākou mau hilinaʻi (no ka laʻana, multi-user.target). Lawe ka mea hope i ka ʻōnaehana e hana i ke ʻano i makemake ʻia
Hoʻomākaukau i ka firmware no ka hoʻomaka
I ka hana ʻana i ka firmware, kū mau ka hana o ka hoʻihoʻi ʻana i ke kūlana ʻōnaehana i ka hoʻomaka ʻana a mālama iā ia i ka wā e pani ai. 'O ka moku'āina 'o ia ho'i nā faila ho'onohonoho, nā waihona waihona, nā ho'onohonoho interface, etc.
Holo ʻo Systemd i nā kaʻina hana ma ka pahuhopu like i ka like. Aia nā hilinaʻi e ʻae iā ʻoe e hoʻoholo i ke kaʻina hoʻomaka o nā palapala.
Pehea e hana ai i kaʻu papahana (
- Hoʻomaka ka ʻōnaehana
- Hoʻokuʻu ʻia ka lawelawe settings_restore.service. Nānā ʻo ia i ke ʻano o ka faila settings.txt ma ka ʻāpana ʻikepili. Inā ʻaʻole ia, a laila hoʻonoho ʻia kahi faila kuhikuhi ma kona wahi.
- ʻōlelo huna luna
- inoa hookipa,
- ʻāpana manawa
- wahi ʻāina
- Hoʻoholo inā hoʻohana ʻia nā media āpau. Ma ka maʻamau, liʻiliʻi ka nui o ke kiʻi - no ka maʻalahi o ke kope a hoʻopaʻa ʻana i ka media. I ka hoʻomaka ʻana, nānā ʻo ia e ʻike inā he wahi i hoʻohana ʻole ʻia. Inā loaʻa, hoʻokaʻawale ʻia ka disk.
- Ka hana ʻana i ka mīkini-id mai ka helu MAC. He mea nui kēia no ka loaʻa ʻana o ka helu helu like ma o DHCP
- Nā hoʻonohonoho pūnaewele
- E kaupalena i ka nui o nā lāʻau
- Hoʻomākaukau ʻia ka drive waho no ka hana (inā hiki ke koho ʻia a he hou ka drive)
- E hoʻomaka i ka postgresq
- Hoʻomaka ka lawelawe hoʻihoʻi. Pono e hoʻomākaukau i ka zabbix iā ia iho a me kāna waihona:
- E nānā inā loaʻa kahi waihona zabbix. Inā ʻaʻole, hana ʻia ia mai ka hoʻomaka ʻana o nā dumps (me ka zabbix)
- hana ʻia kahi papa inoa o nā ʻāpana manawa (pono e hōʻike iā lākou ma ka pūnaewele pūnaewele)
- Loaʻa ka IP o kēia manawa, hōʻike ʻia i ka pilikia (kono e komo i ka console)
- Hoʻololi ke kono - ʻike ʻia ka huaʻōlelo Mākaukau e hana
- Ua mākaukau ka firmware no ka hoʻohana
He mea nui nā faila lawelawe, ʻo lākou ka mea e hoʻonohonoho i ke kaʻina o kā lākou hoʻomaka
[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 like me kāu e ʻike ai, ua hoʻokomo au i nā mea hilinaʻi i hana mua kaʻu palapala, a laila e piʻi ka pūnaewele a hoʻomaka ka DBMS.
A ʻo ka lawelawe ʻelua (hoʻomākaukau 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
ʻOi aku ka paʻakikī ma ʻaneʻi. Aia ka hoʻomaka ʻana ma multi-user.target, akā MAHOPE o ka hoʻomaka ʻana i ka postgresql DBMS a me kaʻu setting_restore. Akā MA mua o ka hoʻomaka ʻana i nā lawelawe zabbix.
Hana manawa no ka logrotate
Hiki iā Systemd ke pani iā CRON. Koʻikoʻi. Eia kekahi, ʻaʻole hiki i ka minuke ka pololei, akā a hiki i ka lua (pehea inā pono ia) A i ʻole hiki iā ʻoe ke hana i kahi manawa monotonous, i kapa ʻia e kahi manawa hoʻomaha mai kahi hanana.
ʻO ia ka manawa monotonous e helu i ka manawa mai ka hoʻomaka ʻana o ka mīkini aʻu i hana ai.
Pono kēia i nā faila 2
logrotateTimer.service - ka wehewehe maoli o ka lawelawe:
[Unit]
Description=run logrotate
[Service]
ExecStart=logrotate /etc/logrotate.conf
TimeoutSec=300
He maʻalahi - ka wehewehe ʻana o ke kauoha hoʻomaka.
ʻO ka faila ʻelua logrotateTimer.timer kahi e hana ai nā manawa:
[Unit]
Description=Run logrotate
[Timer]
OnBootSec=15min
OnUnitActiveSec=15min
[Install]
WantedBy=timers.target
He aha kēia:
- wehewehe manawa
- ʻO ka manawa hoʻomaka mua, e hoʻomaka ana mai ka boot system
- manawa o na hoolaha hou aku
- ʻO ka hilinaʻi ʻana i ka lawelawe manawa
Hoʻopili pili i ka wā e pani ai a me kāu pahuhopu pani
Ma kahi hoʻomohala ʻē aʻe, pono wau e hana i kahi ʻano paʻakikī o ka hoʻopau ʻana i ka mīkini - ma o kaʻu pahuhopu ponoʻī, i mea e hana ai i nā hana he nui. Manaʻo pinepine ʻia e hana i kahi lawelawe oneshot me ke koho RemainAfterExit, akā pale kēia iā ʻoe mai ka hana ʻana i kahi palapala pili.
Akā ʻo ka ʻoiaʻiʻo ʻo nā kauoha i hoʻokuʻu ʻia e ke koho ExecOnStop e hoʻokō ʻia ma waho o ka TTY! He maʻalahi ke nānā - hoʻopili i ke kauoha tty a mālama i kāna huahana.
No laila, ua hoʻokō au i ka pani ʻana ma o kaʻu pahuhopu. ʻAʻole wau e ʻōlelo he 100% pololei, akā hana ia!
Pehea i hana ʻia ai (ma nā ʻōlelo maʻamau):
Ua hana au i kahi pahuhopu my_shutdown.target, ʻaʻole i hilinaʻi i kekahi:
my_shutdown.target
[Unit]
Description=my shutdown
AllowIsolate=yes
Wants=my_shutdown.service
I ka hele ʻana i kēia pahuhopu (ma ka systemctl hoʻokaʻawale i ka my_shutdwn.target), ua hoʻomaka ʻo ia i ka lawelawe my_shutdown.service, maʻalahi ka hana - e hoʻokō i ka palapala 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
- I loko o kēia palapala, hana wau i nā hana e pono ai. Hiki iā ʻoe ke hoʻohui i nā palapala he nui i ka pahuhopu no ka maʻalahi a me ka maʻalahi:
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
Nānā. Ke hoʻohana nei i nā faila /tmp/reboot a me /tmp/shutdown. ʻAʻole hiki iā ʻoe ke kāhea i ka pahuhopu me nā ʻāpana. Hiki ke lawelawe wale.
Akā ke hoʻohana nei au i ka pahu hopu e loaʻa ai ka maʻalahi i ka hana a me kahi kauoha o nā hana.
Eia naʻe, hiki mai ka mea hoihoi loa. Pono ka mīkini e pio / hoʻomaka hou. A aia nā koho 2:
- E hoʻololi i ka reboot, shutdown a me nā kauoha ʻē aʻe (he mau symlinks lākou i systemctl) me kāu palapala.Ma loko o ka palapala, hele i my_shutdown.target. A ʻo nā palapala i loko o ka pahuhopu a laila kāhea pololei iā systemctl, no ka laʻana, systemctl reboot
- ʻO kahi koho maʻalahi, akā ʻaʻole wau makemake. Ma nā pilina a pau, mai kāhea aku i ka pani ʻana/reboot/ē aʻe, akā e kāhea pololei i ka systemctl i hoʻokaʻawale ʻia my_shutdown.target
Ua koho au i ka koho mua. I systemd, reboot (e like me poweroff) he mau symlinks i systemd.
ls -l /sbin/poweroff
lrwxrwxrwx 1 root root 14 сен 30 18:23 /sbin/poweroff -> /bin/systemctl
No laila, hiki iā ʻoe ke hoʻololi iā lākou me kāu mau palapala ponoʻī:
reboot
#!/bin/sh
touch /tmp/reboot
sudo systemctl isolate my_shutdown.target
fi
Source: www.habr.com