เชชเชฐเชฟเชเชฏ
เชเซเชฏเชพเชฐเซ Linux เชฎเชพเชเซ เชกเซเชตเชฒเชช เชเชฐเซ เชฐเชนเซเชฏเชพ เชนเซเชฏ, เชคเซเชฏเชพเชฐเซ เชเชจเซเชเชฐเซเชเซเชเชฟเชต เชธเซเชเซเชฐเชฟเชชเซเชเซเชธ เชฌเชจเชพเชตเชตเชพเชจเซเช เชเชพเชฐเซเชฏ เชเซ เชเซ เชธเชฟเชธเซเชเชฎ เชเชพเชฒเซ เช เชฅเชตเชพ เชฌเชเชง เชนเซเชฏ เชคเซเชฏเชพเชฐเซ เชเชเซเชเชฟเชเซเชฏเซเช เชฅเชพเชฏ เชเซ. เชธเชฟเชธเซเชเชฎ 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
เชธเซเชฅเซ เชฎเชนเชคเซเชตเชจเซ เชฌเชพเชฌเชค เช เชเซ เชเซ เชซเชพเชเชจเชฒ.เชเชพเชฐเซเชเซเช เชชเชธเชเชฆ เชเชฐเชตเซเช - เชฒเชเซเชทเซเชฏ เชเซ เชเซเชจเชพ เชชเชฐ เชธเชฟเชธเซเชเชฎ เชธเซเชเชพเชฐเซเชเช
เชช เชชเชฐ เชชเชนเซเชเชเชตเซ เชเซเชเช. เชธเซเชเชพเชฐเซเชเช
เชช เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชฆเชฐเชฎเชฟเชฏเชพเชจ, systemd เชจเชฟเชฐเซเชญเชฐเชคเชพเชเชฎเชพเชเชฅเซ เชชเชธเชพเชฐ เชฅเชถเซ เช
เชจเซ เชคเซเชจเซ เชเชฐเซเชฐเซ เชฆเชฐเซเช เชตเชธเซเชคเซเชจเซ เชฒเซเชจเซเช เชเชฐเชถเซ.
final.target เชชเชธเชเชฆ เชเชฐเชตเชพเชจเซ เชตเชฟเชตเชฟเชง เชฐเซเชคเซ เชเซ, เชฎเซเช เช เชฎเชพเชเซ เชฒเซเชกเชฐ เชตเชฟเชเชฒเซเชชเชจเซ เชเชชเชฏเซเช เชเชฐเซเชฏเซ เชเซ.
เช เชเชคเชฟเชฎ เชชเซเชฐเชเซเชทเซเชชเชฃ เชเชจเชพ เชเซเชตเซ เชฆเซเชเชพเชฏ เชเซ:
- เชฌเซเชเชฒเซเชกเชฐ เชถเชฐเซ เชฅเชพเชฏ เชเซ
- เชฌเซเชเชฒเซเชกเชฐ final.target เชชเซเชฐเชพเชฎเซเชเชฐ เชชเชธเชพเชฐ เชเชฐเซเชจเซ เชซเชฐเซเชฎเชตเซเชฐเชจเซ เชฒเซเชจเซเช เชเชฐเชตเชพเชจเซเช เชถเชฐเซ เชเชฐเซ เชเซ
- Systemd เชธเชฟเชธเซเชเชฎ เชถเชฐเซ เชเชฐเชตเชพเชจเซเช เชถเชฐเซ เชเชฐเซ เชเซ. เช เชจเซเชเซเชฐเชฎเซ เชคเซเชฎเชจเซ เช เชตเชฒเชเชฌเชจ (เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, multi-user.target) เชฆเซเชตเชพเชฐเชพ basic.target เชฎเชพเชเชฅเซ installer.target เช เชฅเชตเชพ work.target เชชเชฐ เชเชพเชฏ เชเซ. เชฌเชพเชฆเชฎเชพเช เชธเชฟเชธเซเชเชฎเชจเซ เชเชเซเชเชฟเชค เชฎเซเชกเชฎเชพเช เชเชพเชฎ เชเชฐเชตเชพ เชฎเชพเชเซ เชฒเชพเชตเซ เชเซ
เชฒเซเชเช เชฎเชพเชเซ เชซเชฐเซเชฎเชตเซเชฐ เชคเซเชฏเชพเชฐ เชเชฐเซ เชฐเชนเซเชฏเซเช เชเซ
เชซเชฐเซเชฎเชตเซเชฐ เชฌเชจเชพเชตเชคเซ เชตเชเชคเซ, เชเชพเชฐเซเชฏ เชนเชเชฎเซเชถเชพ เชธเซเชเชพเชฐเซเชเช เชช เชธเชฎเชฏเซ เชธเชฟเชธเซเชเชฎเชจเซ เชธเซเชฅเชฟเชคเชฟเชจเซ เชชเซเชจเชเชธเซเชฅเชพเชชเชฟเชค เชเชฐเชตเชพเชจเซเช เช เชจเซ เชถเช เชกเชพเชเชจ เชเชฐเชคเซ เชตเชเชคเซ เชคเซเชจเซ เชธเชพเชเชตเชตเชพเชจเซเช เชเชฆเซเชญเชตเซ เชเซ. เชธเซเชเซเช เชเชเชฒเซ เชฐเซเชชเชฐเซเชเชพเชเชเชจ เชซเชพเชเชฒเซ, เชกเซเชเชพเชฌเซเช เชกเชฎเซเชช, เชเชจเซเชเชฐเชซเซเชธ เชธเซเชเชฟเชเชเซเชธ เชตเชเซเชฐเซ.
Systemd เชธเชฎเชพเชจ เชฒเชเซเชทเซเชฏเชฎเชพเช เชชเซเชฐเชเซเชฐเชฟเชฏเชพเชเชจเซ เชธเชฎเชพเชเชคเชฐ เชฐเซเชคเซ เชเชฒเชพเชตเซ เชเซ. เชเชตเซ เชจเชฟเชฐเซเชญเชฐเชคเชพเช เชเซ เชเซ เชคเชฎเชจเซ เชธเซเชเซเชฐเชฟเชชเซเชเชจเซ เชธเซเชเชพเชฐเซเชเช เชช เชเซเชฐเชฎ เชจเชเซเชเซ เชเชฐเชตเชพเชจเซ เชฎเชเชเซเชฐเซ เชเชชเซ เชเซ.
เชคเซ เชฎเชพเชฐเชพ เชชเซเชฐเซเชเซเชเซเชเชฎเชพเช เชเซเชตเซ เชฐเซเชคเซ เชเชพเชฎ เชเชฐเซ เชเซ (
- เชธเชฟเชธเซเชเชฎ เชถเชฐเซ เชฅเชพเชฏ เชเซ
- Settings_restore.service เชธเซเชตเชพ เชถเชฐเซ เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ. เชคเซ เชกเซเชเชพ เชตเชฟเชญเชพเชเชฎเชพเช settings.txt เชซเชพเชเชฒเชจเซ เชนเชพเชเชฐเซ เชฎเชพเชเซ เชคเชชเชพเชธ เชเชฐเซ เชเซ. เชเซ เชคเซ เชคเซเชฏเชพเช เชจ เชนเซเชฏ, เชคเซ เชคเซเชจเซ เชเชเซเชฏเชพเช เชธเชเชฆเชฐเซเชญ เชซเชพเชเชฒ เชฎเซเชเชตเชพเชฎเชพเช เชเชตเซ เชเซ. เชเชเชณ, เชธเชฟเชธเซเชเชฎ เชธเซเชเชฟเชเชเซเชธ เชชเซเชจเชเชธเซเชฅเชพเชชเชฟเชค เชฅเชพเชฏ เชเซ:
- เชเชกเชฎเชฟเชจเชฟเชธเซเชเซเชฐเซเชเชฐ เชชเชพเชธเชตเชฐเซเชก
- เชฏเชเชฎเชพเชจ เชจเชพเชฎ,
- เชธเชฎเชฏ เชเซเชจ
- เชฒเซเชเซเชฒ
- เชจเชเซเชเซ เชเชฐเซ เชเซ เชเซ เชถเซเช เชคเชฎเชพเชฎ เชฎเซเชกเชฟเชฏเชพเชจเซ เชเชชเชฏเซเช เชฅเช เชฐเชนเซเชฏเซ เชเซ. เชกเชฟเชซเซเชฒเซเช เชฐเซเชชเซ, เชเชฌเซเชจเซเช เชเชฆ เชจเชพเชจเซเช เชเซ - เชฎเซเชกเชฟเชฏเชพ เชชเชฐ เชเซเชชเชฟ เช เชจเซ เชฐเซเชเซเชฐเซเชกเชฟเชเชเชจเซ เชธเชฐเชณเชคเชพ เชฎเชพเชเซ. เชธเซเชเชพเชฐเซเชเช เชช เชชเชฐ, เชคเซ เชนเชเซ เชชเชฃ เชตเชฃเชตเชชเชฐเชพเชฏเซเชฒ เชเชเซเชฏเชพ เชเซ เชเซ เชเซเชฎ เชคเซ เชเซเชตเชพ เชฎเชพเชเซ เชคเชชเชพเชธ เชเชฐเซ เชเซ. เชเซ เชคเซเชฏเชพเช เชนเซเชฏ, เชคเซ เชกเชฟเชธเซเช เชซเชฐเซเชฅเซ เชชเชพเชฐเซเชเซเชถเชจ เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ.
- MAC เชเชกเซเชฐเซเชธ เชชเชฐเชฅเซ เชฎเชถเซเชจ-id เชเชจเชฐเซเช เชเชฐเซ เชฐเชนเซเชฏเซเช เชเซ. DHCP เชฆเซเชตเชพเชฐเชพ เชธเชฎเชพเชจ เชธเชฐเชจเชพเชฎเซเช เชฎเซเชณเชตเชตเชพ เชฎเชพเชเซ เช เชฎเชนเชคเซเชตเชชเซเชฐเซเชฃ เชเซ
- เชจเซเชเชตเชฐเซเช เชธเซเชเชฟเชเชเซเชธ
- เชฒเซเชเชจเชพ เชเชฆเชจเซ เชฎเชฐเซเชฏเชพเชฆเชฟเชค เชเชฐเซ เชเซ
- เชฌเชพเชนเซเชฏ เชกเซเชฐเชพเชเชต เชเชพเชฎ เชฎเชพเชเซ เชคเซเชฏเชพเชฐ เชฅเช เชฐเชนเซ เชเซ (เชเซ เช เชจเซเชฐเซเชช เชตเชฟเชเชฒเซเชช เชธเชเซเชทเชฎ เชนเซเชฏ เช เชจเซ เชกเซเชฐเชพเชเชต เชจเชตเซ เชนเซเชฏ)
- เชชเซเชธเซเชเชเซเชฐเซเชธเซเช เชถเชฐเซ เชเชฐเซ
- เชชเซเชจเชเชธเซเชฅเชพเชชเชจ เชธเซเชตเชพ เชถเชฐเซ เชฅเชพเชฏ เชเซ. เชเชฌเซเชฌเซเชเซเชธ เชชเซเชคเซ เช
เชจเซ เชคเซเชจเซ เชกเซเชเชพเชฌเซเช เชคเซเชฏเชพเชฐ เชเชฐเชตเชพ เชฎเชพเชเซ เชคเซ เชเชฐเซเชฐเซ เชเซ:
- เชเชฌเซเชฌเซเชเซเชธ เชกเซเชเชพเชฌเซเช เชชเชนเซเชฒเซเชฅเซ เช เชเซ เชเซ เชเซเชฎ เชคเซ เชคเชชเชพเชธเซ เชเซ. เชเซ เชจเชนเชฟเช, เชคเซ เชคเซ เชถเชฐเซเชเชคเชจเชพ เชกเชฎเซเชชเซเชธเชฎเชพเชเชฅเซ เชฌเชจเชพเชตเชตเชพเชฎเชพเช เชเชตเซ เชเซ (เชเซเชฌเชฟเชเซเชธ เชธเชพเชฅเซ เชธเชฎเชพเชตเชฟเชทเซเช)
- เชธเชฎเชฏ เชเซเชจเชจเซ เชธเซเชเชฟ เชฌเชจเชพเชตเชตเชพเชฎเชพเช เชเชตเซ เชเซ (เชคเซเชฎเชจเซ เชตเซเชฌ เชเชจเซเชเชฐเชซเซเชธเชฎเชพเช เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เชเชฐเชตเชพ เชฎเชพเชเซ เชเชฐเซเชฐเซ เชเซ)
- เชตเชฐเซเชคเชฎเชพเชจ IP เชฎเชณเซเชฏเซ เชเซ, เชคเซ เช เชเชเชฎเชพเช เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เชฅเชพเชฏ เชเซ (เชเชจเซเชธเซเชฒเชฎเชพเช เชฒเซเช เชเชจ เชเชฐเชตเชพ เชฎเชพเชเซเชจเซเช เชเชฎเชเชคเซเชฐเชฃ)
- เชเชฎเชเชคเซเชฐเชฃ เชฌเชฆเชฒเชพเชฏ เชเซ - เชเชพเชฎ เชเชฐเชตเชพ เชฎเชพเชเซ เชคเซเชฏเชพเชฐ เชถเชฌเซเชฆเชธเชฎเซเชน เชฆเซเชเชพเชฏ เชเซ
- เชซเชฐเซเชฎเชตเซเชฐ เชเชชเชฏเซเช เชฎเชพเชเซ เชคเซเชฏเชพเชฐ เชเซ
เชธเซเชตเชพ เชซเชพเชเชฒเซ เชฎเชนเชคเซเชตเชชเซเชฐเซเชฃ เชเซ, เชคเซ เชคเซ เชเซ เชเซ เชคเซเชฎเชจเชพ เชฒเซเชจเซเชเชจเซ เชเซเชฐเชฎ เชธเซเช เชเชฐเซ เชเซ
[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 เช เชจเซ my 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