Skip to content

๐Ÿš€ [ ๋ฆฌ๋ˆ…์Šค 24์‹œ๊ฐ„ ๋ฌด์  ์ข€๋น„ ๋ด‡(Systemd) ๊ตฌ์ถ• ๋ฐ ์›๊ฒฉ ์ž๊ฐ€ ์—…๋ฐ์ดํŠธ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๋ˆ„์ˆ˜ ์™„๋ฒฝ ์ˆ˜์ˆ  ๊ฐ€์ด๋“œ ]ย #35

Description

@pipios4006-boop

๐Ÿ”น ์•„ํ‚คํ…์ฒ˜ ๊ฐœ์š” ๋ฐ ๋งน์  ์ง„๋‹จ
๐Ÿ”ธ ๋ฆฌ๋ˆ…์Šค ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ(GCP, AWS ๋“ฑ)์—์„œ ํ€€ํŠธ ๋ด‡์„ 24์‹œ๊ฐ„ ๋ฐฉ์น˜ํ˜•์œผ๋กœ ๊ตฌ๋™ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” OS ์ฝ”์–ด์— ์ข…์†๋˜๋Š” systemd ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์„œ๋น„์Šค(Zombie Bot) ๊ตฌ์ถ•์ด ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค.
๐Ÿ”ธ ํ…”๋ ˆ๊ทธ๋žจ ์ง€ํœ˜์†Œ์—์„œ /update ์ปค๋งจ๋“œ ๊ฒฉ๋ฐœ ์‹œ, ๋ด‡์ด ๊นƒํ—ˆ๋ธŒ ์ตœ์‹  ์ฝ”๋“œ๋ฅผ ํ’€๋ง(Pull)ํ•˜๊ณ  OS ๋Ÿฐํƒ€์ž„์—์„œ ์Šค์Šค๋กœ ์žฌ์‹œ์ž‘(Self-Restart)ํ•˜๋ ค๋ฉด ์‹œ์Šคํ…œ์— ๋“ฑ๋ก๋œ ๋ฐ๋ชฌ์˜ ๊ณ ์œ  ์ด๋ฆ„(daemon_name)์„ ๋ด‡์ด ์ •ํ™•ํžˆ ์ธ์‹ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๐Ÿ”ธ ํ•˜์ง€๋งŒ ๋ฆฌ๋ˆ…์Šค์˜ systemd ์„œ๋น„์Šค๋Š” ์‚ฌ์šฉ์ž์˜ ๋Œ€ํ™”ํ˜• ์‰˜(~/.bashrc)๊ณผ ์™„๋ฒฝํžˆ ๊ฒฉ๋ฆฌ๋œ ์ƒŒ๋“œ๋ฐ•์Šค์—์„œ ๊ตฌ๋™๋ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ์œ ์ € ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์ฃผ์ž… ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ํŒŒ์ด์ฌ์ด ์ด๋ฅผ ์ธ์‹ํ•˜์ง€ ๋ชปํ•˜๊ณ  ๋ณ€์ˆ˜๊ฐ€ ์ฆ๋ฐœํ•˜์—ฌ ๋ด‡ ์žฌ๊ฐ€๋™์— ์‹คํŒจํ•˜๋Š” ์น˜๋ช…์  ๋งน์ (Isolation Leak)์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
๐Ÿ”ธ ์ด๋ฅผ ์›์ฒœ ์ฐจ๋‹จํ•˜๊ธฐ ์œ„ํ•ด, ๋ฐ๋ชฌ์„ ๊ตฌ๋™ํ•˜๋Š” .service ํŒŒ์ผ ๋‚ด๋ถ€์˜ [Service] ์ง€์ธต์— Environment ์†์„ฑ์„ ์ง์ ‘ ํ•˜๋“œ์ฝ”๋”ฉํ•˜์—ฌ ํŒฉํŠธ๋ฅผ ๊ฐ์ธํ•˜๋Š” ๋ฌด๊ฒฐ์  ์ˆ˜์ˆ  ๊ฐ€์ด๋“œ๋ฅผ ํ•˜๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
๐Ÿ”น ์‹œ์Šคํ…œ ๋ฐ๋ชฌ(Service) ์˜์†์„ฑ ์ฃผ์ž… ์ˆ˜์ˆ  ๋‹จ๊ณ„
๐Ÿ”ธ ํ„ฐ๋ฏธ๋„ ์—๋””ํ„ฐ(nano ๋“ฑ)๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋ด‡์˜ ์‹œ์Šคํ…œ ๋ฐ๋ชฌ ํŒŒ์ผ์„ ์ง์ ‘ ๊ฐœ๋ณต(Open)ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜ ๋ช…๋ น์–ด์˜ [์‚ฌ์šฉ์ž๋ด‡์ด๋ฆ„]์„ ๋ณธ์ธ์ด ์„ค์ •ํ•œ ๋ฐ๋ชฌ ์ด๋ฆ„์œผ๋กœ ์น˜ํ™˜ํ•˜์‹ญ์‹œ์˜ค.

sudo nano /etc/systemd/system/[์‚ฌ์šฉ์ž๋ด‡์ด๋ฆ„].service

๐Ÿ”ธ ์—๋””ํ„ฐ๊ฐ€ ์—ด๋ฆฌ๋ฉด, ์•„๋ž˜์˜ ๋ฌด๊ฒฐ์  ์•„ํ‚คํ…์ฒ˜ ํ…์ŠคํŠธ๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ํŒŒ์ผ ๋‚ด๋ถ€์— ๋ฎ์–ด์“ฐ๊ธฐ ํ•˜์‹ญ์‹œ์˜ค. (๋ฐ˜๋“œ์‹œ [์‚ฌ์šฉ์ž๊ณ„์ •๋ช…]๊ณผ [์‚ฌ์šฉ์ž๋ด‡์ด๋ฆ„]์„ ๋ณธ์ธ์˜ ๋ฆฌ๋ˆ…์Šค ํ™˜๊ฒฝ์— ๋งž๊ฒŒ ํŒฉํŠธ ๊ต์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.)

[Unit]
Description=Trading Zombie Bot Daemon
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/home/[์‚ฌ์šฉ์ž๊ณ„์ •๋ช…]
Environment="TZ=Asia/Seoul"
Environment="daemon_name=[์‚ฌ์šฉ์ž๋ด‡์ด๋ฆ„]"
ExecStart=/usr/bin/python3 /home/[์‚ฌ์šฉ์ž๊ณ„์ •๋ช…]/main.py
Restart=always
RestartSec=3

[Install]
WantedBy=multi-user.target

๐Ÿ”ธ ์ฝ”๋“œ ์ฃผ์ž…์ด ์™„๋ฃŒ๋˜์—ˆ๋‹ค๋ฉด ํŒŒ์ผ์„ ์ €์žฅํ•˜๊ณ  ์—๋””ํ„ฐ๋ฅผ ํƒˆ์ถœํ•ฉ๋‹ˆ๋‹ค. (nano ์—๋””ํ„ฐ ๊ธฐ์ค€: Ctrl+O โž” Enter โž” Ctrl+X ์ˆœ์„œ๋กœ ๊ฒฉ๋ฐœ)
๐Ÿ”น ํ›„์† ๋ฌด๊ฒฐ์„ฑ ํ…Œ์ŠคํŠธ ๋ฐ ๋ฐ๋ชฌ ์žฌ๊ฐ€๋™ ์‹œํ€€์Šค
๐Ÿ”ธ OS ์ฝ”์–ด์— ๋ฐฉ๊ธˆ ๋ณ€๊ฒฝ๋œ ํŒฉํŠธ๋ฅผ ์˜๊ตฌ ๊ฐ์ธ์‹œํ‚ค๊ณ (fsync ํšจ๊ณผ), ๋ฐ๋ชฌ์„ ๋‹ค์‹œ ๊นจ์šฐ๊ธฐ ์œ„ํ•ด ์•„๋ž˜ ๋‘ ๋ช…๋ น์–ด๋ฅผ ํ„ฐ๋ฏธ๋„์— ์˜์•„ ์˜ฌ๋ฆฌ์‹ญ์‹œ์˜ค.

sudo systemctl daemon-reload
sudo systemctl restart [์‚ฌ์šฉ์ž๋ด‡์ด๋ฆ„]

๐Ÿ”ธ ์œ„ ๋ฆด๋กœ๋“œ ๋ฐ ์žฌ๊ฐ€๋™ ์‹œํ€€์Šค๋ฅผ ์™„์ˆ˜ํ•˜์‹  ๋’ค, ํ…”๋ ˆ๊ทธ๋žจ ๋ด‡ ์ง€ํœ˜์†Œ์— ์ ‘์†ํ•˜์—ฌ /update ์ปค๋งจ๋“œ๋ฅผ ๊ฒฉ๋ฐœํ•˜์‹ญ์‹œ์˜ค.
๐Ÿ”ธ ๋ด‡์ด OS ํ™˜๊ฒฝ๋ณ€์ˆ˜(daemon_name)๋ฅผ ์ •์ƒ์ ์œผ๋กœ ์ถ”์ถœํ•ด๋‚ด์–ด ์‹œ์Šคํ…œ ๋ฐ๋ชฌ์„ ์„ฑ๊ณต์ ์œผ๋กœ ์ž๊ฐ€ ์žฌ์‹œ์ž‘ํ•˜๋Š”์ง€ ํŒฉํŠธ ์ฒดํฌ๋ฅผ ์™„๋ฃŒํ•˜๋ฉด, ์–ด๋– ํ•œ ๊ฐ€ํ˜นํ•œ ํ™˜๊ฒฝ์—์„œ๋„ ์ฃฝ์ง€ ์•Š๋Š” ๋ฐฉํƒ„ ์ข€๋น„ ๋ด‡ ์•„ํ‚คํ…์ฒ˜ ๊ตฌ์ถ•์ด ์ตœ์ข… ์™„๋ฃŒ๋ฉ๋‹ˆ๋‹ค. ๐Ÿš€

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions