рд╕рд┐рд╕реНрдЯрдореНрдб, рдкрд░рд╕реНрдкрд░рд╕рдВрд╡рд╛рджреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдгрд┐ рдЯрд╛рдЗрдорд░

рд╕рд┐рд╕реНрдЯрдореНрдб, рдкрд░рд╕реНрдкрд░рд╕рдВрд╡рд╛рджреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдгрд┐ рдЯрд╛рдЗрдорд░

рдкрд░рд┐рдЪрдп

рд▓рд┐рдирдХреНрд╕рд╕рд╛рдареА рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддрд╛рдирд╛, рд╕рд┐рд╕реНрдЯреАрдо рдЪрд╛рд▓реВ рдХрд┐рдВрд╡рд╛ рдмрдВрдж рдХреЗрд▓реНрдпрд╛рд╡рд░ рдЕрдВрдорд▓рд╛рдд рдЖрдгрд▓реНрдпрд╛ рдЬрд╛рдгрд╛рд░реНтАНрдпрд╛ рдкрд░рд╕реНрдкрд░рд╕рдВрд╡рд╛рджреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪреЗ рдХрд╛рд░реНрдп рдЙрджреНрднрд╡рддреЗ. рд╕рд┐рд╕реНрдЯрдо V рдордзреНрдпреЗ рд╣реЗ рд╕реЛрдкреЗ рд╣реЛрддреЗ, рдкрд░рдВрддреБ systemd рд╕рд╣ рддреЗ рд╕рдорд╛рдпреЛрдЬрди рдХрд░рддреЗ. рдкрдг рддреНрдпрд╛рдЪреЗ рд╕реНрд╡рддрдГрдЪреЗ рдЯрд╛рдЗрдорд░ рдЕрд╕реВ рд╢рдХрддрд╛рдд.

рдЖрдореНрд╣рд╛рд▓рд╛ рд▓рдХреНрд╖реНрдпрд╛рдВрдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд╛ рдЖрд╣реЗ?

рдЕрд╕реЗ рдЕрдиреЗрдХрджрд╛ рд▓рд┐рд╣рд┐рд▓реЗ рдЬрд╛рддреЗ рдХреА рдЯрд╛рд░реНрдЧреЗрдЯ рд╣реЗ рд╕рд┐рд╕реНрдЯрдо 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 рдХрд┐рдВрд╡рд╛ base.target рд╡рд░реВрди work.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. рдкреЛрд╕реНрдЯрдЧреНрд░реЗрд╕реНрдХ рд╕реБрд░реВ рдХрд░рд╛
  4. рдкреБрдирд░реНрд╕рдВрдЪрдпрд┐рдд рд╕реЗрд╡рд╛ рд╕реБрд░реВ рд╣реЛрддреЗ. 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

рд╣реЗ рдпреЗрдереЗ рдереЛрдбреЗ рдЕрдзрд┐рдХ рдХреНрд▓рд┐рд╖реНрдЯ рдЖрд╣реЗ. рд▓реЙрдиреНрдЪ рдорд▓реНрдЯреА-user.target рдордзреНрдпреЗ рджреЗрдЦреАрд▓ рдЖрд╣реЗ, рдкрд░рдВрддреБ postgresql DBMS рдЖрдгрд┐ рдорд╛рдЭреЗ setting_restore рд╕реБрд░реВ рдХреЗрд▓реНрдпрд╛рдирдВрддрд░. рдкрдг zabbix рд╕реЗрд╡рд╛ рд╕реБрд░реВ рдХрд░рдгреНрдпрд╛рдкреВрд░реНрд╡реА.

рд▓реЙрдЧрд░реЛрдЯреЗрдЯрд╕рд╛рдареА рдЯрд╛рдЗрдорд░ рд╕реЗрд╡рд╛

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

рдпреЗрдереЗ рдХрд╛рдп рдЖрд╣реЗ:

  • рдЯрд╛рдЗрдорд░ рд╡рд░реНрдгрди
  • рдкреНрд░рдердо рдкреНрд░рд╛рд░рдВрдн рд╡реЗрд│, рдкреНрд░рдгрд╛рд▓реА рдмреВрдЯ рдкрд╛рд╕реВрди рд╕реБрд░реВ
  • рдкреБрдвреАрд▓ рдкреНрд░рдХреНрд╖реЗрдкрдг рдХрд╛рд▓рд╛рд╡рдзреА
  • рдЯрд╛рдЗрдорд░ рд╕реЗрд╡реЗрд╡рд░ рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡. рдЦрд░рдВ рддрд░, рд╣реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЖрд╣реЗ рдЬреА рдЯрд╛рдЗрдорд░ рдмрдирд╡рддреЗ

рдмрдВрдж рдХрд░рддрд╛рдирд╛ рдкрд░рд╕реНрдкрд░рд╕рдВрд╡рд╛рджреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдгрд┐ рдЖрдкрд▓реЗ рд╢рдЯрдбрд╛рдЙрди рд▓рдХреНрд╖реНрдп

рджреБрд╕рд░реНтАНрдпрд╛ рд╡рд┐рдХрд╛рд╕рд╛рдордзреНрдпреЗ, рдорд▓рд╛ рдорд╢реАрди рдмрдВрдж рдХрд░рдгреНрдпрд╛рдЪреА рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдЖрд╡реГрддреНрддреА рдХрд░рд╛рд╡реА рд▓рд╛рдЧрд▓реА - рдорд╛рдЭреНрдпрд╛ рд╕реНрд╡рддрдГрдЪреНрдпрд╛ рд▓рдХреНрд╖реНрдпрд╛рджреНрд╡рд╛рд░реЗ, рдЕрдиреЗрдХ рдХреНрд░рд┐рдпрд╛ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА. рд╕рд╛рдорд╛рдиреНрдпрддрдГ 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/рд░реАрдмреВрдЯ рдЖрдгрд┐ /tmp/рд╢рдЯрдбрд╛рдЙрди рдлрд╛рдЗрд▓реНрд╕ рд╡рд╛рдкрд░рдгреЗ. рдЖрдкрдг рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕рд╕рд╣ рд▓рдХреНрд╖реНрдп рдХреЙрд▓ рдХрд░реВ рд╢рдХрдд рдирд╛рд╣реА. рдлрдХреНрдд рд╕реЗрд╡рд╛ рд╢рдХреНрдп рдЖрд╣реЗ.

рдкрд░рдВрддреБ рдореА рдХрд╛рдорд╛рдд рд▓рд╡рдЪрд┐рдХрддрд╛ рдЖрдгрд┐ рдХреГрддреАрдВрдЪрд╛ рд╣рдореА рдХреНрд░рдо рдорд┐рд│рд╡рдгреНрдпрд╛рд╕рд╛рдареА рд▓рдХреНрд╖реНрдп рд╡рд╛рдкрд░рддреЛ.

рддрдерд╛рдкрд┐, рд╕рд░реНрд╡рд╛рдд рдордиреЛрд░рдВрдЬрдХ рдЧреЛрд╖реНрдЯ рдирдВрддрд░ рдЖрд▓реА. рдорд╢реАрди рдмрдВрдж/рд░реАрд╕реНрдЯрд╛рд░реНрдЯ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдЖрдгрд┐ 2 рдкрд░реНрдпрд╛рдп рдЖрд╣реЗрдд:

  • рд░реАрдмреВрдЯ, рд╢рдЯрдбрд╛рдЙрди рдЖрдгрд┐ рдЗрддрд░ рдХрдорд╛рдВрдбреНрд╕ (рддреЗ рдЕрдЬреВрдирд╣реА systemctl рд▓рд╛ рд╕рд┐рдорд▓рд┐рдВрдХ рдЖрд╣реЗрдд) рддреБрдордЪреНрдпрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд╕рд╣ рдмрджрд▓рд╛. рд╕реНрдХреНрд░рд┐рдкреНрдЯрдЪреНрдпрд╛ рдЖрдд, my_shutdown.target рд╡рд░ рдЬрд╛. рдЖрдгрд┐ рд▓рдХреНрд╖реНрдпрд╛рдордзреАрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдирдВрддрд░ рдереЗрдЯ systemctl рд╡рд░ рдХреЙрд▓ рдХрд░рддрд╛рдд, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, systemctl рд░реАрдмреВрдЯ
  • рдПрдХ рд╕реЛрдкрд╛ рдкрд░реНрдпрд╛рдп, рдкрдг рдорд▓рд╛ рддреЛ рдЖрд╡рдбрдд рдирд╛рд╣реА. рд╕рд░реНрд╡ рдЗрдВрдЯрд░рдлреЗрд╕рдордзреНрдпреЗ, рд╢рдЯрдбрд╛рдЙрди/рд░реАрдмреВрдЯ/рдЗрддрд░ рдХреЙрд▓ рдХрд░реВ рдирдХрд╛, рдкрд░рдВрддреБ рд▓рдХреНрд╖реНрдпрд┐рдд systemctl isolate my_shutdown.target рд▓рд╛ рдереЗрдЯ рдХреЙрд▓ рдХрд░рд╛

рдореА рдкрд╣рд┐рд▓рд╛ рдкрд░реНрдпрд╛рдп рдирд┐рд╡рдбрд▓рд╛. systemd рдордзреНрдпреЗ, рд░реАрдмреВрдЯ (рдкреЙрд╡рд░рдСрдл рд╕рд╛рд░рдЦреЗ) рд╣реЗ 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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛