ααα ααααΈααααΆα
αα αααα’αα·αααααααααΆααααΈαα»α ααΆααα·α αα ααααΆααααααΎαααααααΈαα’αααααααααααααααΌαααΆαααααα·ααααα·αα ααααααααααααααααααΌαααΆαααΎα α¬αα·αααΎαα‘αΎαα αα αααα»ααααααααα V ααΆααΆααααα½α ααα»ααααααΆαα½αααΉα systemd ααΆααααΎααΆααααααααΌαα ααα»ααααααΆα’αΆα ααΆααααααα·ααΈαααααααααααααααΆα
α ααα»α’αααΈααΆαααΆααΎαααααΌαααΆαααααα ?
ααΆααααΌαααΆααααααααΆααΉαααΆααααΆααααα αααααΎααΆ analogue ααααααα·αααααα αααα»ααααααααα V -init α αααα»ααα·ααααααααααΆααΌαααααΆαααα ααΆααα½αααΆα αααΎαααΆαααα α αΎαα’αααα’αΆα αααα αααααα ααααΆαααα»α α αΎαα§ααΆα ααα ααΎαααααΎαααΆααααα»αααααΆαααααααααααΎααΆααααααααΆαααα½α α αΎαααααΎαααααααΆαααααααα ααΆαααααα ααα αα½ααααα·αααΆαααΆααΆαα»αααααα ααΆαααααΆαα’αΆαααααααα»αααααα
α§ααΆα αααααααααα αα αααααΎαααααΎαααΆα (αα·αααααΆαααΌαα αααααααα) ααΆαα½αααΉαααααΎαααΆαααααααΈαα’αααααααα
ααΆααα·αααααΆα’αααΈααααα αααα½αα―αα
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
ααααα αααααΉαα αΆααααααΎααα αααααα multi-user.target ααααΌαααΆαα αΆααααααΎα α αΎαα α αα installer.serviceα ααααααΆαααΆααααα α’αΆα ααΆαααααΆααααααααααααΆα αααΎαα
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
α αΎαα α»αααααα α§ααΆα αααααααααααΈαααααααα»αααααΎαααΆαα
#!/bin/bash
# ΠΠ΅ΡΠ΅Ρ
ΠΎΠ΄ΠΈΠΌ Π² tty3
chvt 3
echo "Install, y/n ?"
read user_answer
α’αααΈαααααααΆαααααα»αααΊααααΎαααΎα final.target - ααααα
ααααααααααααα½αααααααααα
αααα
αΆααααααΎαα ααα‘α»ααααα
αΆααααααΎαααααΎαααΆα systemd ααΉαααααααΆααααΆαα’αΆααααα αα·αα
αΆααααααΎαα’αααΈααααααααΆααααααΆααααΌαααΆαα
ααΆααα·ααΈαααααααααΆααΎααααΈααααΎαααΎα final.target αααα»αααΆαααααΎαααααΎααααααα·ααΈααΆααααααααΆααααΆα
ααΆαααΆαααααα ααα α»ααααααααΎααα ααΌα αααα
- αααααα·ααΈα αΆααααααΎαααααααααα αΆααααααΎα
- αααααα·ααΈα αΆααααααΎαααααααααα αΆααααααΎαααααΎαααΆααααααα·ααΈαααααααααααααααΆαααααΆαααΆαααααα final.target
- Systemd α αΆααααααΎαααααΎαααΆαααααααααα αααααα installer.target α¬ work.target ααΈ basic.target ααΆααααααΆαα’αΆααααααααααα½ααα (α§ααΆα ααα multi-user.target)α ααααααααααααΆαααααααααα±ααααααΎαααΆααααα»ααααααααα ααααΆα
αααα»ααααα ααααααα·ααΈαααααααααααΆααααΆαααΎαααααΎαααΆα
αα ααααααααΎααααααα·ααΈαααααα ααΆααα·α αα αααααααΎαα‘αΎαααααΆαααααΆαααααΆαααΆααααααααααα αααα αΆααααααΎα α αΎααααααΆαα»αααΆαα ααααα·αα ααααααΆααααααΆα―αααΆαααααααα ααΆαααααααα ααΆααααα ααααΌαααααΆααα·αααααα ααΆααααααα ααα»α αααααΆααααα
Systemd ααααΎαααΆαααααΎαααΆααααα»αααααα αααα½αααααααααΆα ααΆαααΆαα’αΆααααααααα’αα»ααααΆαα±ααα’ααααααααααααΆααα αΆααααααΎαααααααααΈαα
ααΎααΆααααΎαααΆααααΆαααΌα
ααααα
αα
αααα»ααααααααααααααα»α (
- ααααααααα αΆααααααΎα
- ααααΆαααα settings_restore.service ααααΌαααΆαααΎαααααΎαααΆαα ααΆαα·αα·αααααααΎαααααααΆαααα―αααΆα settings.txt αα
αααα»αααααααα·ααααααα ααααα·αααΎααΆαα·ααα
ααΈααααα α―αααΆααααααααΌαααΆαααΆαααα
ααααααααααααΆα αααααΆαααα ααΆααααααααααααααααααΌαααΆαααααΆαα‘αΎααα·αα
- ααΆααααααααΆααα’αααααααααααα
- ααααααααΆαααΈα,
- ααααααααα
- ααΌαααααΆα
- αααααααΆααΎααααααααααααααααααΆαααΆααα’αααααα»αααααΌαααΆαααααΎααααΆαααααα¬ααα ααΆαααααΆαααΎα ααα αααΌαααΆαααΊααΌα - αααααΆααααΆαααΆααααα½αααααΆαα αααα αα·ααααα ααΆααααααααααααααααααααΆαα αα αααα αΆααααααΎα ααΆαα·αα·αααααΎαααΆααΎααΆαα ααΆααααααααααααα¬α’ααα ααααα·αααΎααΆα ααΆαααααΌαααΆααααα ααα‘αΎααα·αα
- ααΆααααααΎαααααααααΆαααααΆαααΈαααΈα’αΆααααααΆα MAC α αααααΆαααΆααααααΆαααααααΆααααΆαααα½αααΆαα’αΆααααααΆαααΌα ααααΆααΆαααα DHCP
- ααΆααααααβαβααααΆβα
- αααααααα ααααααααα ααα»
- ααααΆαααΆααααα αααα»αααααΌαααΆααααα ααααααΆααααΆαααΆα (ααααα·αααΎαααααΎααααααααΌαααααΆααααΌαααΆαααΎα α αΎαααααΆαααΊααααΈ)
- α αΆααααααΎα postgresq
- ααααΆααααααααΆαα‘αΎααα·αα
αΆααααααΎαα ααΆα
αΆαααΆα
αααΎααααΈαααα
α zabbix αααα½αααΆ αα·αααΌαααααΆααα·ααααααααααααΆα
- αα·αα·αααααΎαααΆααΎααΆαααΌαααααΆααα·αααααα zabbix αα½α α αΎαα¬αα α ααααα·αααΎαα·αααααα ααΆααααΌαααΆααααααΎαααΈααΆααααα ααααΆαα αΆααααααΎα (αα½ααααα αΌαααΆαα½α zabbix)
- αααααΈααααααααααααααΆααααΌαααΆααααααΎα (α αΆαααΆα αααααΌααααα αΆααα½αααΆαα αααα»αα ααα»α αααααΆααααα ααααα)
- IP αα αα α»ααααααααααΌαααΆαααααΎα ααΆααααΌαααΆααααα αΆααα αααα»ααααα αΆ (ααΆαα’ααααΎαα±ααα αΌααα»αααΌα)
- ααΆαα’ααααΎαααααΆααααααΌα - ααααΆααααααααα½ααα½α ααΆααααΎααααΈααααΎααΆαααα α‘αΎα
- αααααα·ααΈααααααααΊαα½α ααΆαααααααΆααααΆαααααΎααααΆαα
α―αααΆαααααΆααααααΆαααΆααααααΆαα αα½αααααΆα’ααααααααααααΆααααααΆαααΎαααααΎαααΆααααααα½αααα
[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
ααΌα αααα’αααα’αΆα ααΎαααΎα αααα»αααΆαααα‘αΎαααΆαα’αΆααααα ααΌα ααααααααααΈααααααααα»αααΉαααααΎαααΆαααααΌα α αΎαααΆααααααααΆαααααααααΆαααΉαα‘αΎα α αΎα DBMS ααΉαα αΆααααααΎαα
αα·αααααΆααααααΈααΈα (ααΆααααα α 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
ααΆααΆαααΆααααα»αααααΆαααααα·α αα ααΈαααα ααΆαααΎαααααΎαααΆαααααΆααα αααα»α multi-user.target ααα»αααααααααΆααααΈα αΆααααααΎα postgresql DBMS αα·αααΆαααααααααααααα»αα‘αΎααα·αα ααα»αααααα»ααααα αΆααααααΎαααααΆαααα zabbix α
ααααΆαααααααααααααΆαα logrotate
Systemd α’αΆα
αααα½α CRON α αααααααααα ααΆαααααα
ααα ααΆαααααΉαααααΌαβαα·αβαααβαα½αβααΆααΈβαα ααα»ααααβαα αΌαβαααβαα·ααΆααΈ (ααΎβααΆβααααΌαβααΆαβαααΆαβααΆ) α¬βα’αααβα’αΆα
βαααααΎαβαααααα·ααΈβαααααβααααβα―αααααα αααβα α
βααΆαβαααβαααβααααΆβααΈβααααΉαααα·ααΆαααβαα½αα
ααΆααΊααΆαααααα·ααΈααααααααααααΆα―αααααααααααΆαααααααααΆααΈααΆαα
αΆααααααΎααααααΆαααΈαααααααα»αααΆααααααΎαα
ααΆααΉαααααΌαααΆαα―αααΆα 2
logrotateTimer.service - ααΆααα·αααααΆαα·αααααΆααααααααΆααααα
[Unit]
Description=run logrotate
[Service]
ExecStart=logrotate /etc/logrotate.conf
TimeoutSec=300
ααΆααΆαααα - ααΆααα·αααααΆα’αααΈααΆααααααααΆα
αΆααααααΎαα
α―αααΆαααΈααΈα logrotateTimer.timer ααΊααΆααααααααααααααα·ααΈαααααααααααααΎαααΆαα
[Unit]
Description=Run logrotate
[Timer]
OnBootSec=15min
OnUnitActiveSec=15min
[Install]
WantedBy=timers.target
ααΎααΆαα’αααΈαα ααΈαααα
- ααΆααα·αααααΆα’αααΈαααααα·ααΈααααααααααααΆ
- αααα αΆααααααΎαααααΌα α αΆααααααΎαααΈααΆαα αΆααααααΎααααααααα
- ααααααααααΆαααΎαααααΎαααΆαααααααααα
- ααΆαααΉαααα’ααααΎααααΆαααααα·ααΈαααααααααα ααΆααα·ααααααΊααΆααααα’ααααααααααααΎααααααα·ααΈααααααααα
ααααααΈαα’αααααααααα ααααα·α αα·αααααα αα·αααααα’αααα
αα αααα»αααΆαα’αα·αααααααα½ααααααααα αααα»αααααΌαααααΎαααααααα»αααααΆααααααααααααααΆααα·ααααΆαααΈα - ααΆααααααααα ααααΆαααααα½ααααααααα»α ααΎααααΈα’αα»αααααααααααΆαααΆα αααΎαα ααΆααααααΆααΆααααΌαααΆαααααΆαα±αααααααΎαααααΆαααα oneshot ααΆαα½ααααααΎα RemainAfterExit ααα»ααααααΆααΆααΆααα’αααααΈααΆααααααΎαααααααΈαα’ααααααααα
ααα»ααααααΆααα·αααΊααΆααΆααααααααΆαααααΎαααααααααΎα ExecOnStop ααααΌαααΆαααααα·ααααα·αα ααΆααααα TTY! ααΆααΆααααα½ααααα»αααΆααααα½ααα·αα·ααα - αα·αααααΆααααΆααααααααΆ tty α αΎααααααΆαα»αααααααααααααΆα
ααΌα
ααααα αΎα αααα»αααΆαα’αα»ααααααΆααα·αααΆαααααα
αααααααα»αα αααα»ααα·αα’αα’αΆαααΆααααΉαααααΌα 100% αα ααα»ααααααΆααααΎαααΆα!
αααααααααΆααααΌαααΆαααααΎ (αααα»ααααααΌαα
):
αααα»αααΆααααααΎαααααα
my_shutdown.target ααααα·αα’αΆαααααααΎααααΆααααΆααα
my_shutdown.target
[Unit]
Description=my shutdown
AllowIsolate=yes
Wants=my_shutdown.service
αα ααααα αααααααα ααα (ααΆαααα systemctl isolate my_shutdwn.target) ααΆααΆαααΎαααααΎαααΆαααααΆαααα my_shutdown.service αααααΆααα·α αα ααΊααΆαααα - ααΎααααΈααααα·ααααα·ααααααΈα 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
- αα ααΆααααα»αααααααΈαααααααα»αα’αα»αααααααααααΆαα αΆαααΆα αα α’αααα’αΆα ααααααααααααΈαααΆα αααΎααα ααΆααααααα αααααΆααααΆααααααα αα·αααΆαααΆααααα½αα
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
α αααΆαα αααααααΎα―αααΆα /tmp/reboot αα·α /tmp/shutdown α α’ααααα·αα’αΆα α α ααααα ααΆαα½ααααΆαααΆααααααααΆαααα ααΆαααααααΆααααααα»ααααααααα’αΆα ααααΎααΆαα
ααα»αααααααα»αααααΎααααα ααΎααααΈα±ααααΆαααΆααααααααααα»αααΆαααΆα αα·αααααΆαααααααααααΆααααααΆαααΆαααΆααΆα
αααααΆαααΆαααΆαααααα’αααΈααααα½αα±ααα αΆααα’αΆαααααααααα»αααΆαααΎαα‘αΎααα ααααααααα αααΆαααΈαααααΌααααα·α/α αΆααααααΎαα‘αΎααα·αα α αΎαααΆααααααΎα 2α
- αααα½αααΆααα·αααΎαα‘αΎααα·α ααΆααα·α αα·αααΆααααααααΆαααααααα (αα½αααΆαα ααααΆαααααααΆαααα systemctl) ααΆαα½αααΉαααααααΈαααααα’αααα αα ααΆααααα»αααααααΈα ααΌαα αΌααα ααΆαα my_shutdown.targetα α αΎαααααααΈαααΆααααα»αααααα αααααΆααααα α αα systemctl αααααααΆαα α§ααΆα ααα systemctl reboot
- αααααΎαααΆααααααΆα ααα»αααααααα»ααα·αα αΌαα α·αααααΆααα αα αααα»αα ααα»α αααααΆααααΆααα’αα αα·αααααΌαα α shutdown/reboot/other ααααα ααα»ααααα α αα ααΆαα target systemctl ααΆα ααααα‘αα my_shutdown.target
αααα»αααΆαααααΎαααΎααααααΎαααααΌαα αα αααα»α systemd, reboot (ααΌα ααΆ poweroff) ααΊααΆ symlinks αα systemd α
ls -l /sbin/poweroff
lrwxrwxrwx 1 root root 14 ΡΠ΅Π½ 30 18:23 /sbin/poweroff -> /bin/systemctl
ααΌα
αααα α’αααα’αΆα
αααα½ααα½αααΆαααααααααΈαααααΆαααααα½αααααα’αααα
α
αΆααααααΎαα‘αΎααα·α
#!/bin/sh
touch /tmp/reboot
sudo systemctl isolate my_shutdown.target
fi
ααααα: www.habr.com