αž”αŸ’αžšαž–αŸαž“αŸ’αž’ αžŸαŸ’αž‚αŸ’αžšαžΈαž”αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜ αž“αž·αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αŸ†αžŽαžαŸ‹αž˜αŸ‰αŸ„αž„

αž”αŸ’αžšαž–αŸαž“αŸ’αž’ αžŸαŸ’αž‚αŸ’αžšαžΈαž”αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜ αž“αž·αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αŸ†αžŽαžαŸ‹αž˜αŸ‰αŸ„αž„

αžŸαŸαž…αž€αŸ’αžαžΈαžŽαŸ‚αž“αžΆαŸ†

αž“αŸ…αž–αŸαž›αž’αž—αž·αžœαžŒαŸ’αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž›αžΈαž“αž»αž… αž—αžΆαžšαž€αž·αž…αŸ’αž…αž“αŸƒαž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαžŸαŸ’αž‚αŸ’αžšαžΈαž”αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αžΎαž€ αž¬αž”αž·αž‘αž€αžΎαžαž‘αžΎαž„αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’ 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 αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž”αŸ’αžšαžΎαž‡αž˜αŸ’αžšαžΎαžŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‘αžΆαž‰αž™αž€αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžœαžΆαŸ”

αž€αžΆαžšαž”αžΆαž‰αŸ‹αž”αž„αŸ’αž αŸ„αŸ‡αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž˜αžΎαž›αž‘αŸ…αžŠαžΌαž…αž“αŸαŸ‡αŸ–

  1. αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž…αžΆαž”αŸ‹αž•αŸ’αžŠαžΎαž˜αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜
  2. αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž…αžΆαž”αŸ‹αž•αŸ’αžŠαžΎαž˜αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αžŠαŸ„αž™αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžš final.target
  3. Systemd αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž”αŸ’αžšαž–αŸαž“αŸ’αž’αŸ” αž”αž“αŸ’αžαž‘αŸ… installer.target ឬ work.target αž–αžΈ basic.target αžαžΆαž˜αžšαž™αŸˆαž—αžΆαž–αž’αžΆαžŸαŸ’αžšαŸαž™αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸ (αž§αž‘αžΆαž αžšαžŽαŸ multi-user.target)αŸ” αž€αŸ’αžšαŸ„αž™αž˜αž€αž‘αŸ€αžαž“αžΆαŸ†αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž±αŸ’αž™αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αŸ’αž“αž»αž„αžšαž”αŸ€αž”αžŠαŸ‚αž›αž…αž„αŸ‹αž”αžΆαž“

αž€αŸ†αž–αž»αž„αžšαŸ€αž”αž…αŸ†αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš

αž“αŸ…αž–αŸαž›αž”αž„αŸ’αž€αžΎαžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹ αž—αžΆαžšαž€αž·αž…αŸ’αž…αžαŸ‚αž„αžαŸ‚αž€αžΎαžαž‘αžΎαž„αž“αŸƒαž€αžΆαžšαžŸαŸ’αžŠαžΆαžšαžŸαŸ’αžαžΆαž“αž—αžΆαž–αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž“αŸ…αž–αŸαž›αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜ αž αžΎαž™αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αžœαžΆαž“αŸ…αž–αŸαž›αž”αž·αž‘αŸ” αžšαžŠαŸ’αž‹αž˜αžΆαž“αž“αŸαž™αžαžΆαž―αž€αžŸαžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ αž€αžΆαžšαž”αŸ„αŸ‡αž…αŸ„αž›αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™ αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αŸ”αž›αŸ”

Systemd αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αŸ’αž“αž»αž„αž‚αŸ„αž›αžŠαŸ…αžαŸ‚αž˜αž½αž™αžŸαŸ’αžšαž”αž‚αŸ’αž“αžΆαŸ” αž˜αžΆαž“αž—αžΆαž–αž’αžΆαžŸαŸ’αžšαŸαž™αžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž€αŸ†αžŽαžαŸ‹αž›αŸ†αžŠαžΆαž”αŸ‹αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž“αŸƒαžŸαŸ’αž‚αŸ’αžšαžΈαž”αŸ”

αžαžΎαžœαžΆαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž™αŸ‰αžΆαž„αžŠαžΌαž…αž˜αŸ’αžαŸαž…αž“αŸ…αž€αŸ’αž“αž»αž„αž‚αž˜αŸ’αžšαŸ„αž„αžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ† ( https://habr.com/ru/post/477008/ https://github.com/skif-web/monitor)

  1. αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜
  2. αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜ settings_restore.service αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ” αžœαžΆαž–αž·αž“αž·αžαŸ’αž™αžšαž€αž˜αžΎαž›αžœαžαŸ’αžαž˜αžΆαž“αž“αŸƒαž―αž€αžŸαžΆαžš settings.txt αž“αŸ…αž€αŸ’αž“αž»αž„αž•αŸ’αž“αŸ‚αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžœαžΆαž˜αž·αž“αž“αŸ…αž‘αžΈαž“αŸ„αŸ‡αž‘αŸ αž―αž€αžŸαžΆαžšαž™αŸ„αž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαžΆαž€αŸ‹αž“αŸ…αž€αž“αŸ’αž›αŸ‚αž„αžšαž”αžŸαŸ‹αžœαžΆαŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€ αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαŸ’αžŠαžΆαžšαž‘αžΎαž„αžœαž·αž‰αŸ–
    • αž–αžΆαž€αŸ’αž™αžŸαž˜αŸ’αž„αžΆαžαŸ‹αž’αŸ’αž“αž€αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„
    • αžˆαŸ’αž˜αŸ„αŸ‡αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“,
    • αž›αŸ’αžœαŸ‚αž„αž˜αŸ‰αŸ„αž„
    • αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“
    • αž€αŸ†αžŽαžαŸ‹αžαžΆαžαžΎαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž•αŸ’αžŸαž–αŸ’αžœαž•αŸ’αžŸαžΆαž™αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž€αŸ†αž–αž»αž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŠαŸ‚αžšαž¬αž‘αŸαŸ” αžαžΆαž˜αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜ αž‘αŸ†αž αŸ†αžšαžΌαž”αž—αžΆαž–αž‚αžΊαžαžΌαž… - αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž—αžΆαž–αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž“αŸƒαž€αžΆαžšαž…αž˜αŸ’αž›αž„ αž“αž·αž„αžαžαž‘αŸ…αž€αžΆαž“αŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž•αŸ’αžŸαž–αŸ’αžœαž•αŸ’αžŸαžΆαž™αŸ” αž“αŸ…αž–αŸαž›αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜ αžœαžΆαž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžαžΆαžαžΎαžœαžΆαž“αŸ…αž˜αžΆαž“αž€αž“αŸ’αž›αŸ‚αž„αž‘αŸ†αž“αŸαžšαž¬αž’αžαŸ‹αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž˜αžΆαž“ αžαžΆαžŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ‚αž„αž…αŸ‚αž€αž‘αžΎαž„αžœαž·αž‰αŸ”
    • αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž›αŸαžαžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž–αžΈαž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ MAC αŸ” αž“αŸαŸ‡αž˜αžΆαž“αžŸαžΆαžšαŸˆαžŸαŸ†αžαžΆαž“αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž‘αž‘αž½αž›αž”αžΆαž“αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αžŠαžΌαž…αž‚αŸ’αž“αžΆαžαžΆαž˜αžšαž™αŸˆ DHCP
    • αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹β€‹αž”β€‹αžŽαŸ’αžαžΆβ€‹αž‰
    • αž€αŸ†αžŽαžαŸ‹αž‘αŸ†αž αŸ†αž“αŸƒαž€αŸ†αžŽαžαŸ‹αž αŸαžαž»
    • αžŠαŸ’αžšαžΆαž™αžαžΆαž„αž€αŸ’αžšαŸ…αž€αŸ†αž–αž»αž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαŸ€αž”αž…αŸ†αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž„αžΆαžš (αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž‡αž˜αŸ’αžšαžΎαžŸαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αžΎαž€ αž αžΎαž™αžŠαŸ’αžšαžΆαž™αž‚αžΊαžαŸ’αž˜αžΈ)
  3. αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜ postgresq
  4. αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αžŸαŸ’αžαžΆαžšαž‘αžΎαž„αžœαž·αž‰αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αŸ” αžœαžΆαž…αžΆαŸ†αž”αžΆαž…αŸ‹αžŠαžΎαž˜αŸ’αž”αžΈαžšαŸ€αž”αž…αŸ† zabbix αžαŸ’αž›αž½αž“αžœαžΆ αž“αž·αž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αžšαž”αžŸαŸ‹αžœαžΆαŸ–
    • αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžαžΆαžαžΎαž˜αžΆαž“αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™ zabbix αžšαž½αž…αž αžΎαž™αž¬αž“αŸ…αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž˜αž·αž“αž˜αŸ‚αž“αž‘αŸ αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž–αžΈαž€αžΆαžšαž”αŸ„αŸ‡αž…αŸ„αž›αž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžŠαžΎαž˜ (αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž‡αžΆαž˜αž½αž™ zabbix)
    • αž”αž‰αŸ’αž‡αžΈαž“αŸƒαžαŸ†αž”αž“αŸ‹αž–αŸαž›αžœαŸαž›αžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαž (αž…αžΆαŸ†αž”αžΆαž…αŸ‹αžαŸ’αžšαžΌαžœαž”αž„αŸ’αž αžΆαž‰αž–αž½αž€αžœαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αž‚αŸαž αž‘αŸ†αž–αŸαžš)
    • IP αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αžƒαžΎαž‰ αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αž“αŸ…αž€αŸ’αž“αž»αž„αž”αž‰αŸ’αž αžΆ (αž€αžΆαžšαž’αž‰αŸ’αž‡αžΎαž‰αž±αŸ’αž™αž…αžΌαž›αž€αž»αž„αžŸαžΌαž›)
  5. αž€αžΆαžšαž’αž‰αŸ’αž‡αžΎαž‰αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžš - αžƒαŸ’αž›αžΆαžαŸ’αžšαŸ€αž˜αžαŸ’αž›αž½αž“αžšαž½αž…αžšαžΆαž›αŸ‹αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž€αžΆαžšαž›αŸαž…αž‘αžΎαž„
  6. αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αž‚αžΊαžšαž½αž…αžšαžΆαž›αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹

αž―αž€αžŸαžΆαžšαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž˜αžΆαž“αžŸαžΆαžšαŸˆαžŸαŸ†αžαžΆαž“αŸ‹ αž–αž½αž€αž‚αŸαž‡αžΆαž’αŸ’αž“αž€αž€αŸ†αžŽαžαŸ‹αž›αŸ†αžŠαžΆαž”αŸ‹αž“αŸƒαž€αžΆαžšαž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαŸ”

[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

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹