
ááááŤááşá¸
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.servicemulti-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
fisource: www.habr.com
