Systemd, nā palapala pili a me nā manawa

Systemd, nā palapala pili a me nā manawa

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:

  1. Hoʻomaka ka bootloader
  2. Hoʻomaka ka bootloader e hoʻomaka i ka firmware ma ke kau ʻana i ka palena hope.target
  3. 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 ( https://habr.com/ru/post/477008/ https://github.com/skif-web/monitor)

  1. Hoʻomaka ka ʻōnaehana
  2. 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)
  3. E hoʻomaka i ka postgresq
  4. 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)
  5. Hoʻololi ke kono - ʻike ʻia ka huaʻōlelo Mākaukau e hana
  6. 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

Pākuʻi i ka manaʻo hoʻopuka