áááá«ááºáž
Linux á¡ááœáẠáá®ááœááºááá·áºá¡áá«á á áá áºá¡á¬áž ááœáá·áºáá¬ážáá±á¬á¡áá« ááá¯á·ááá¯áẠááááºááœá¬ážáá±á¬á¡áá«ááœáẠáá¯ááºáá±á¬ááºááá·áº á¡ááŒááºá¡ááŸááºá¡áá»áá¯ážááŒá¯áá±á¬ script áá»á¬ážááᯠáááºáá®ážááẠáá¬áááºááŒá áºáááºá System V ááœááºáááºážáááºááœááºáá°áá±á¬áºáááºáž systemd ááŒáá·áºáá»áááºááŸáááŸá¯áá»á¬ážááŒá¯áá¯ááºáááºá áá«áá±ááá·áº áá°á·ááŸá¬ ááá¯ááºááá¯áẠtimers ááŸáááá¯ááºáá«áááºá
áá¬ááŒá±á¬áá·áº áá áºááŸááºááœá± ááá¯á¡ááºáá¬áá²á
áá áºááŸááºááẠsystem V -init ááœáẠrunlevel á analogue á¡ááŒá áºáá±á¬ááºááœááºáááºáá¯áááŒá¬áááá±ážáá¬ážáááºá á¡ááŒá±áá¶á¡á¬ážááŒáá·áº ááá±á¬ááá°áá«á áááºážááá¯á·áá²á០ááá¯áá»á¬ážááŒá®áž áááºááẠpackages áá»á¬ážááᯠá¡á¯ááºá á¯áá»á¬ážááœá²ááá¯ááºááŒá®áž á¥ááá¬á¡á¬ážááŒáá·áºá command áá áºáá¯áááºážááŒáá·áº áááºáá±á¬ááºááŸá¯á¡á¯ááºá á¯áá áºá á¯ááᯠá áááºááŒá®áž á¡ááá¯áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠáá¯ááºáá±á¬ááºááá¯ááºáááºá ááá¯á·á¡ááŒáẠáááºážááá¯á·ááœáẠá¡áááºáááºážá¡ááá·áºáááŸáá ááŸá®ááá¯ááŸá¯áá¬ááŸááááºá
á¡ááŒááºá¡ááŸááºá¡áá»áá¯ážáááºáá±á¬ááºáá±á¬ script ááá¯ááœáá·áºáá¬ážáá±á¬á¡áá« (á¡ááºá¹áá«áááºá¡áá»ááºážáá»á¯ááº) ááá¯ááœáá·áºáá¬ážáá±á¬á¡áá«áá áºááŸááºáá¥ááá¬
áá áºááŸááºááá¯ááºááá¯ááºá ááŸááºážáááºážáá»ááº-
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
á¡áá±ážááŒá®ážáá¯á¶ážá¡áá»ááºááŸá¬ system startup ááœááºáá±á¬ááºááŸáááá·áºáá±á¬áá
áºááŸáẠfinal.target ááá¯ááœá±ážáá»ááºáááºááŒá
áºáááºá á
áááºááá·áº áá¯ááºáááºážá
ááºá¡ááœááºážá systemd ááẠááŸá®ááá¯á¡á¬ážáá¬ážááŸá¯áá»á¬ážááᯠááŒááºáááºážááŒá®áž ááá¯á¡ááºááá»áŸááᯠá
áááºáá«áááºá
final.target ááᯠááœá±ážááẠááá°áá®áá±á¬ áááºážáááºážáá»á¬áž ááŸááá«áááºá á€á¡ááœáẠloader option ááᯠáá»áœááºáá±á¬áº á¡áá¯á¶ážááŒá¯áá²á·áááºá
áá±á¬ááºáá¯á¶ážááœáŸááºáááºáá¯á¶ááŸá¬ á€áá²á·ááá¯á·ááŒá áºáááº-
- bootloader á áááºáááºá
- bootloader ááẠfinal.target parameter ááá¯ááŒááºáááºážááŒááºážááŒáá·áº firmware ááá¯á áááºáááºá
- Systemd ááẠsystem ááá¯á áááºáááºá áááºážááá¯á·áááŸá®ááá¯ááŸá¯áá»á¬ážááŸáááá·áº installer.target ááá¯á·ááá¯áẠwork.target ááá¯á· áááºááá¯ááºááœá¬ážááẠ(á¥ááá¬á multi-user.target)á áá±á¬ááºáá¯á¶ážááœáẠsystem ááá¯á¡ááá¯ááŸááá±á¬áá¯ááºááœááºá¡áá¯ááºáá¯ááºá á±áááºá
á áááºááŒááºážá¡ááœáẠfirmware ááᯠááŒááºáááºáá±áá«áááºá
Firmware áááºáá®ážááá·áºá¡áá«á áá¯ááºáááºážá áááºáá»áááºááœáẠá áá áºá¡ááŒá±á¡áá±ááᯠááŒááºáááºááá°ááŒá®áž ááááºááá·áºá¡áá« áááºážááᯠááááºážáááºážááẠá¡ááŒá²áááºážáá¯ááºáá±á¬ááºáááá·áºáá¬áááºááŒá áºáááºá State ááá¯áááºááŸá¬ configuration filesá database dumpsá interface settings á áááºááá¯á·ááᯠááá¯ááá¯áááºá
Systemd ááẠáá¯ááºáááºážá ááºáá»á¬ážááᯠáá°áá®áá±á¬áá áºááŸááºááœáẠá¡ááŒáá¯ááºáá¯ááºáá±á¬ááºáááºá scripts áá»á¬ážá startup sequence ááá¯áá¯á¶ážááŒááºáááºááœáá·áºááŒá¯áá±á¬ááŸá®ááá¯ááŸá¯áá»á¬ážááŸááááºá
áá«á·ááá±á¬áá»ááºááŸá¬ áááºááá¯á¡áá¯ááºáá¯ááºáá² (
- á áá áºá áááºáááºá
- settings_restore.service áááºáá±á¬ááºááŸá¯ááᯠá
áááºááá¯ááºáá«ááŒá®á áááºážááẠáá±áá¬ááá¹áááŸá settings.txt ááá¯ááºá áá«áááºááŸá¯ááᯠá
á
áºáá±ážáááºá áááºážááœááºáááŸááá«áá áááºááœáŸááºážááá¯ááºááᯠáááºážááá±áá¬ááœáẠáá¬ážááŸááááºááŒá
áºáááºá ááá¯á·áá±á¬ááºá á
áá
áºáááºáááºáá»á¬ážááᯠááŒááºáááºááá°áááº-
- administrator á áá¬ážááŸááº
- á¡áááºááŸááºá¡áááºá
- á¡áá»áááºáá¯ááº
- áá±á
- áá®áá®áá¬á¡á¬ážáá¯á¶ážááᯠá¡áá¯á¶ážááŒá¯ááŒááºážááŸááááŸá áá¯á¶ážááŒááºáááºá áá¯á¶ááŸááºá¡á¬ážááŒáá·áºá áá¯á¶á¡ááœááºá¡á á¬ážááẠáá±ážáááºááẠ- áá®áá®áá¬ááá¯á· áá°ážáá°áááºááŸáá·áº ááŸááºáááºážáááºááẠááœááºáá°á á±áááºá á áááºáá»áááºááœááºá áááºážááẠá¡áá¯á¶ážáááŒá¯ááá±ážáá±á¬ áá±áá¬ááŸááááŸá á á áºáá±ážáááºá ááŸááá»áŸááº, disk ááᯠrepartitioned á
- MAC ááááºá á¬á០machine-id ááá¯áá¯ááºáá±ážááŒááºážá áááºážááẠDHCP ááŸáá áºááá·áº áá°áá®áá±á¬ááááºá á¬ááᯠááá°áááºá¡ááœáẠá¡áá±ážááŒá®ážáá«áááºá
- ááœááºáááºáááºáááºáá»á¬áž
- áá áºáá¯á¶ážáá»á¬ážá á¡ááœááºá¡á á¬ážááᯠááá·áºáááºáá¬ážáááºá
- ááŒááºááááá¯ááºááᯠá¡áá¯ááºá¡ááœáẠááŒááºáááºáá±áá«ááẠ(áááºááá¯ááºáᬠááœá±ážáá»ááºááœáá·áºááᯠááœáá·áºáá¬ážááŒá®áž áááá¯ááºááẠá¡áá áºááŒá áºáá«á)
- postgresq ááá¯á áááºáá«á
- ááŒááºáááºááá°ááŒááºážáááºáá±á¬ááºááŸá¯á
áááºáááºá zabbix ááá¯ááºááá¯ááºááŸáá·áº áááºážááá±áá¬áá±á·á
áºááᯠááŒááºáááºááẠááá¯á¡ááºáááº-
- zabbix áá±áá¬áá±á·á ẠááŸáááŸáá·áºááŒá®ážáá¬áž ááŸááááŸá á á áºáá±ážáá«á ááá¯ááºáá«áá áááºážááᯠáááŠážáááºááŸááºááŒááºáž á¡ááŸáá¯ááºáá¯á¶áá»á¬áž (zabbix áá«áááºáááº) á០áááºáá®ážáá¬ážáááºá
- á¡áá»áááºáá¯ááºáá»á¬ážá á¬áááºážááᯠáááºáá®ážáá¬ážááẠ(áááºážááá¯á·ááᯠáááºá¡ááºáá¬áá±á·á áºááœáẠááŒáááẠááá¯á¡ááºáááº)
- áááºááŸá IP ááᯠââááœá±á·ááŸáááŒá®áž ááŒá¿áá¬ááœáẠááŒááá±ááẠ(ááœááºááá¯ážááºááá¯á· áááºáá±á¬ááºááẠááááºááŒá¬ážáá»ááº)
- ááááºááŒá¬ážáá»áẠá¡ááŒá±á¬ááºážá¡áá²áá»á¬áž - á¡áááºááá·áºáá¯ááºááẠáá°áá±á¬ á áá¬ážá ᯠáá±á«áºáá¬áááºá
- Firmware ááẠá¡áá¯á¶ážááŒá¯ááẠá¡ááá·áºááŒá áºáá±áá«ááŒá®á
áááºáá±á¬ááºááŸá¯ááá¯ááºáá»á¬ážááẠá¡áá±ážááŒá®ážáááºá áááºážááá¯á·ááẠáááºážááá¯á·á ááœáŸáá·áºáááºááŸá¯á á¡á á®á¡á á¥áºááᯠáááºááŸááºáá±ážáááºá
[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
áááºááœá±á·ááŒááºáááá·áºá¡ááá¯ááºážá áá»áœááºá¯ááºá script ááᯠáŠážá áœá¬á¡áá¯ááºáá¯ááºá á±ááẠááŸá®ááá¯á¡á¬ážáá¬ážááŸá¯áá»á¬ážááᯠááá·áºááœááºážááŒá®ážááŸáᬠááœááºáááºáááºáá¬ááŒá®áž 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 ááŸáá·áº áá»áœááºá¯ááºá setting_restore ááá¯á áááºááŒá®ážáá±á¬ááºááœááºááŒá áºáááºá ááá¯á·áá±á¬áº zabbix áááºáá±á¬ááºááŸá¯áá»á¬ážáá áááºáá®á
logrotate á¡ááœáẠtimer áááºáá±á¬ááºááŸá¯
Systemd ááẠCRON ááá¯á¡á
á¬ážááá¯ážááá¯ááºáááºá á¡áá±ážá¡áááºáá¬ážá ááá¯á·á¡ááŒááºá áááá»ááŸá¯ááŸá¬ áá
áºáááá
áºá¡ááááá¯ááºáá±á¬áºáááºáž áá
áºá
áá¹ááá·áºá¡áá (ááá¯á¡ááºáá«á áááºááá¯á·áá¯ááºáá±á¬ááºáááºáááºáž) ááá¯á·ááá¯áẠááŒá
áºáááºáá
áºáá¯á០á¡áá»áááºáá¯ááºááœá¬ážááŒááºážáá¯áá±á«áºáá±á¬ ááœá®ážááŸá±á·áá±ááá·áºá¡áá»áááºááá¯ááºážááᯠáááºáááºáá®ážááá¯ááºáááºá
áááºážááẠáá»áœááºá¯ááºáááºáá®ážáá²á·ááá·áº á
ááºá
áááºáá»áááºá០á¡áá»áááºááᯠáá±ááœááºááá·áº ááœá®áá®áá±á¬ á¡áá»áááºááá¯ááºážáááááá¬ááŒá
áºáááºá
áááºážááẠááá¯áẠá ááá¯áẠááá¯á¡ááºáááºááŒá
áºáááºá
logrotateTimer.service - áááºáá±á¬ááºááŸá¯á á¡ááŸááºááááºáá±á¬áºááŒáá»ááº-
[Unit]
Description=run logrotate
[Service]
ExecStart=logrotate /etc/logrotate.conf
TimeoutSec=300
ááá¯ážááŸááºážááẠ- launch command ááá±á¬áºááŒáá»ááºá
áá¯áááááá¯áẠlogrotateTimer.timer ááẠááá¯ááºáá¬áá»á¬áž á¡áá¯ááºáá¯ááºááá·áºáá±áá¬ááŒá
áºáááº-
[Unit]
Description=Run logrotate
[Timer]
OnBootSec=15min
OnUnitActiveSec=15min
[Install]
WantedBy=timers.target
áá®ááŸá¬ áá¬áá²-
- timer áá±á¬áºááŒáá»ááº
- ááááá¯á¶áž á áááºáá»áááºá á áá áºá áááºáá»áááºá០á áááºáááºá
- áááºáá¶ááœáŸáá·áºáááºááá·áºáá¬á
- timer áááºáá±á¬ááºááŸá¯á¡áá±á«áº áá°áááº. á¡ááŸááºáá±á¬á·á áá«á timer ááᯠááŒá¯áá¯ááºáá±ážáá²á· string ááŒá áºáá«áááºá
ááááºááá·áºá¡áá« á¡ááŒááºá¡ááŸááºá¡áá»áá¯ážááŒá¯áá±á¬ áá¬ááºááœáŸááºážááŸáá·áº áááºáááááºáá áºááẠáá áºááŸááº
á¡ááŒá¬ážáá±á¬ ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááœááºá áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážá áœá¬ááᯠáá¯ááºáá±á¬ááºáááºá¡ááœáẠáá»áœááºá¯ááºáááá¯ááºááá¯ááºáá áºááŸááºááŸáá áºááá·áº á ááºááá¯ááááºááẠááá¯ááá¯ááŸá¯ááºááœá±ážáá±á¬áá¬ážááŸááºážááᯠáá¯ááºáá±á¬ááºááááºááŒá áºáááºá RemainAfterExit ááœá±ážáá»ááºááŸá¯ááŒáá·áº oneshot áááºáá±á¬ááºááŸá¯ááᯠáááºáá®ážááẠáá»á¬ážáá±á¬á¡á¬ážááŒáá·áº á¡ááŒá¶ááŒá¯áá¬ážáá±á¬áºáááºáž áááºážááẠááá·áºá¡á¬áž á¡ááŒááºá¡ááŸááºá¡áá»áá¯ážááŒá¯áá±á¬ script áá áºáá¯áááºáá®ážááŒááºážá០áá¬ážáá®ážáá±ážáá«áááºá
ááá¯á·áá±á¬áºá¡ááŸááºááŸá¬ ExecOnStop ááœá±ážáá»ááºááŸá¯ááŸáá¯ááºááœáŸááºáá±á¬ command áá»á¬ážááᯠTTY ááŒááºáááœááºáá¯ááºáá±á¬ááºáá±ááŒááºážááŒá áºáááºá á á áºáá±ážááẠááœááºáá°ááẠ- tty command ááᯠpaste áá¯ááºááŒá®áž áááºážá output ááᯠááááºážáááºážáá«á
ááá¯á·ááŒá±á¬áá·áº áá»áœááºá¯ááºááẠáá»áœááºá¯ááºááá
áºááŸááºááŒáá·áº ááááºáá
áºááŒááºážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºáá²á·áá«áááºá 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 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
- á€áá¬ááºááœáŸááºážááœáẠáá»áœááºá¯ááºááẠááá¯á¡ááºáá±á¬ áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠáá¯ááºáá±á¬ááºáá«áááºá ááŒá±á¬ááºážááœááºááŒááºááœááºááŸáá·áº á¡áááºááŒá±á á±ááẠáá áºááŸááºááá¯á· script á¡áá»á¬ážá¡ááŒá¬ážááᯠáááºááá·áºááá¯ááºáááºá
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 áá¯ááŸááá«áááºá
- ááá·áº script ááŸáá·áº rebootá shutdown ááŸáá·áº á¡ááŒá¬ážáá±á¬ commands (áááºážááá¯á·ááẠsystemctl á ââsymlinks áá»á¬ážááŒá áºáá±áá²) ááᯠá¡á á¬ážááá¯ážáá«á script á¡ááœááºážá my_shutdown.target ááá¯á· ááœá¬ážáá«á áá áºááŸááºá¡ááœááºážááŸá script áá»á¬ážááẠsystemctl ááá¯ááá¯ááºááá¯ááºáá±á«áºááá¯áá«á á¥ááá¬á systemctl ááŒááºáááºá áááºáá«á
- ááá¯ááá¯ážááŸááºážáá²á· ááœá±ážáá»ááºááŸá¯áá áºáá¯á áá«áá±ááá·áº áá»áœááºáá±á¬áºáááŒáá¯ááºáá°ážá á¡ááºáá¬áá±á·á áºá¡á¬ážáá¯á¶ážááœááºá shutdown/reboot/other ááá¯ááá±á«áºáá«ááŸáá·áºá ááá¯á·áá±á¬áº áá áºááŸáẠsystemctl isolate my_shutdown.target ááᯠááá¯ááºááá¯ááºáá±á«áºááá¯áá«á
áááááœá±ážáá»ááºááŸá¯ááᯠáá«ááœá±ážáá»ááºáá²á·áááºá systemd ááœááºá reboot (poweroff áá²á·ááá¯á·) ááẠsystemd ááá¯á· symlink áá»á¬ážááŒá áºáááºá
ls -l /sbin/poweroff
lrwxrwxrwx 1 root root 14 ÑеМ 30 18:23 /sbin/poweroff -> /bin/systemctl
ááá¯á·ááŒá±á¬áá·áºá áááºážááá¯á·ááᯠááá·áºááá¯ááºááá¯áẠscript áá»á¬ážááŒáá·áº á¡á
á¬ážááá¯ážááá¯ááºáááº-
reboot áá¯ááºáá«
#!/bin/sh
touch /tmp/reboot
sudo systemctl isolate my_shutdown.target
fi
source: www.habr.com