Systemd, เดธเด‚เดตเต‡เดฆเดจเดพเดคเตเดฎเด• เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตเด•เดณเตเด‚ เดŸเตˆเดฎเดฑเตเด•เดณเตเด‚

Systemd, เดธเด‚เดตเต‡เดฆเดจเดพเดคเตเดฎเด• เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตเด•เดณเตเด‚ เดŸเตˆเดฎเดฑเตเด•เดณเตเด‚

เด†เดฎเตเด–เด‚

เดฒเดฟเดจเด•เตเดธเดฟเดจเดพเดฏเดฟ เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดธเดฟเดธเตเดฑเตเดฑเด‚ เด“เดฃเดพเด•เตเด•เตเดฎเตเดชเต‹เดดเต‹ เดทเดŸเตเดŸเตเดกเต—เตบ เดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เดดเต‹ เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเดชเตเดชเต†เดŸเตเดจเตเดจ เด‡เดจเตเดฑเดฑเดพเด•เตเดŸเต€เดตเต เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตเด•เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดšเตเดฎเดคเดฒ เด‰เดฏเตผเดจเตเดจเตเดตเดฐเตเดจเตเดจเต. เดธเดฟเดธเตเดฑเตเดฑเด‚ 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 เดธเดฟเดธเตเดฑเตเดฑเด‚ เด†เดฐเด‚เดญเดฟเด•เตเด•เดพเตป เดคเตเดŸเด™เตเด™เตเดจเตเดจเต. เด…เดŸเดฟเดธเตเดฅเดพเดจเด‚. เดŸเดพเตผเด—เต†เดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เด‡เตปเดธเตเดฑเตเดฑเดพเดณเตผ. เดŸเดพเตผเด—เต†เดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เต เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏเดฟ เดชเต‹เด•เตเดจเตเดจเต (เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, 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 เด‰เตพเดชเตเดชเต†เดŸเตเดคเตเดคเดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต)
    • เดธเดฎเดฏ เดฎเต‡เด–เดฒเด•เดณเตเดŸเต† เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดธเตƒเดทเตเดŸเดฟเดšเตเดšเต (เดตเต†เดฌเต เด‡เดจเตเดฑเตผเดซเต‡เดธเดฟเตฝ เด…เดต เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เด†เดตเดถเตเดฏเดฎเดพเดฃเต)
    • เดจเดฟเดฒเดตเดฟเดฒเต† เดเดชเดฟ เด•เดฃเตเดŸเต†เดคเตเดคเดฟ, เด…เดคเต เดชเตเดฐเดถเตเดจเดคเตเดคเดฟเตฝ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต (เด•เตบเดธเต‹เดณเดฟเดฒเต‡เด•เตเด•เต เดฒเต‹เด—เดฟเตป เดšเต†เดฏเตเดฏเดพเดจเตเดณเตเดณ เด•เตเดทเดฃเด‚)
  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-เด‰เด‚ เดŽเดจเตเดฑเต† 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/reboot, /tmp/shutdown เดซเดฏเดฒเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต. เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดŸเดพเตผเด—เต†เดฑเตเดฑเดฟเดจเต† เดตเดฟเดณเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ. เดธเต‡เดตเดจเด‚ เดฎเดพเดคเตเดฐเดฎเต‡ เดธเดพเดงเตเดฏเดฎเดพเด•เต‚.

เดŽเดจเตเดจเดพเตฝ เดœเต‹เดฒเดฟเดฏเดฟเตฝ เดตเดดเด•เตเด•เดตเตเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเตเดŸเต† เด‰เดฑเดชเตเดชเตเดณเตเดณ เด•เตเดฐเดฎเดตเตเด‚ เดฒเดญเดฟเด•เตเด•เดพเตป เดžเดพเตป เดŸเดพเตผเด—เต†เดฑเตเดฑเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต.

เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เดเดฑเตเดฑเดตเตเด‚ เดฐเดธเด•เดฐเดฎเดพเดฏ เด•เดพเดฐเตเดฏเด‚ เดชเดฟเดจเตเดจเต€เดŸเต เดตเดจเตเดจเต. เดฎเต†เดทเต€เตป เด“เดซเต/เดชเตเดจเดฐเดพเดฐเด‚เดญเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เด•เต‚เดŸเดพเดคเต† 2 เด“เดชเตเดทเดจเตเด•เตพ เด‰เดฃเตเดŸเต:

  • เดจเดฟเด™เตเด™เดณเตเดŸเต† เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดฑเต€เดฌเต‚เดŸเตเดŸเต, เดทเดŸเตเดŸเตเดกเต—เตบ, เดฎเดฑเตเดฑเต เด•เดฎเดพเตปเดกเตเด•เตพ (เด…เดต เด‡เดชเตเดชเต‹เดดเตเด‚ systemctl-เดฒเต‡เด•เตเด•เตเดณเตเดณ เดธเดฟเด‚เดฒเดฟเด™เตเด•เตเด•เตพ) เดฎเดพเดฑเตเดฑเดฟเดธเตเดฅเดพเดชเดฟเด•เตเด•เตเด•. เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเดฟเดจเตเดณเตเดณเดฟเตฝ, my_shutdown.target เดŽเดจเตเดจเดคเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เตเด•. เดŸเดพเตผเด—เต†เดฑเตเดฑเดฟเดจเตเดณเตเดณเดฟเดฒเต† เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตเด•เตพ systemctl-เดจเต† เดจเต‡เดฐเดฟเดŸเตเดŸเต เดตเดฟเดณเดฟเด•เตเด•เตเด•, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, systemctl เดฑเต€เดฌเต‚เดŸเตเดŸเต
  • เด’เดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เด“เดชเตเดทเตป, เดชเด•เตเดทเต‡ เดŽเดจเดฟเด•เตเด•เดคเต เด‡เดทเตเดŸเดฎเดฒเตเดฒ. เดŽเดฒเตเดฒเดพ เด‡เดจเตเดฑเตผเดซเต‡เดธเตเด•เดณเดฟเดฒเตเด‚, เดทเดŸเตเดŸเตเดกเต—เตบ/เดฑเต€เดฌเต‚เดŸเตเดŸเต/เดฎเดฑเตเดฑเตเดณเตเดณเดต เดŽเดจเตเดจเต เดตเดฟเดณเดฟเด•เตเด•เดฐเตเดคเต, เดŽเดจเตเดจเดพเตฝ เดŸเดพเตผเด—เต†เดฑเตเดฑเต systemctl เดเดธเตŠเดฒเต‡เดฑเตเดฑเต my_shutdown.target-เดฒเต‡เด•เตเด•เต เดจเต‡เดฐเดฟเดŸเตเดŸเต เดตเดฟเดณเดฟเด•เตเด•เตเด•.

เดžเดพเตป เด†เดฆเตเดฏ เด“เดชเตเดทเตป เดคเดฟเดฐเดžเตเดžเต†เดŸเตเดคเตเดคเต. systemd-เตฝ, reboot (poweroff เดชเต‹เดฒเต†) 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

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•