[Linux] ์๋น์ค๋? ์๋น์ค ๋ฑ๋ก, ์๋น์ค ๊ธฐ๋, ์๋น์ค ๋ก๊ทธ ๋ณด๊ธฐ
์๋น์ค(Service)๋?
๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ก์ธ์ค๋ก ์ฃผ๋ก ์์คํ ๋ถํ ์์ ์๋์ผ๋ก ํ๋ก๊ทธ๋จ์ด ๋์ํ๋๋ก ํ๊ธฐ ์ํด ์ฌ์ฉํฉ๋๋ค.
์๋น์ค๋ ์ฃผ๋ก systemd๋ฅผ ํตํด ๊ด๋ฆฌ๊ฐ ๋๋ฉฐ, systemctl์ systemd๋ฅผ ํตํด ์๋น์ค๋ฅผ ๊ด๋ฆฌํ๋๋ฐ ์ฌ์ฉํ๋ ๋ช ๋ น์ด ์ ๋๋ค.
์๋น์ค ๋ฑ๋กํ๋ ๋ฐฉ๋ฒ
์๋น์ค๋ฅผ ๋ฑ๋กํ๋ ค๋ฉด /etc/systemd/system
๋๋ /lib/systemd/system
๋๋ ํฐ๋ฆฌ์ [์๋น์ค๋ช
].service
๋ผ๋ ์ด๋ฆ์ ํ์ผ์ ๋ง๋ค๋ฉด ๋ฉ๋๋ค.
์๋๋ nginx๋ฅผ ์๋น์ค๋ก ๋ฑ๋กํ๋ ์์์
๋๋ค.
# nginx.service
[Unit]
Description=Nginx service
# After๋ ํด๋น ์๋น์ค๊ฐ ์ด๋ค ๋ค๋ฅธ ์๋น์ค์ด ์ดํ์ ํ์ฑํ ๋์ด์ผ ํจ์ ์ง์ ํฉ๋๋ค.
# ์๋น์ค ๊ฐ์ ์์กด์ฑ์ ๊ด๋ฆฌํ๋ ๊ฒฝ์ฐ ์ฌ์ฉํฉ๋๋ค.
After=network.target
[Service]
Type=forking
User=root
Group=root
# ์คํ, ์ฌ์์, ์ ์ง์ ํ์ํ ๋ช
๋ น์ ๊ธฐ๋กํฉ๋๋ค.
ExecStart=/usr/sbin/nginx
ExecReload=/usr/sbin/nginx -s reload
ExecStop=/usr/sbin/nginx -s stop
[Install]
# WantedBy๋ ์ด๋ค ๋์์ด ์ํ๋ ์๋น์ค์ธ์ง๋ฅผ ์ง์ ํ๋ ๊ฒ์ผ๋ก ์์กด์ฑ๊ณผ ์คํ ์์๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.
# WantedBy multi-user.target์ ๋ค์ค ์ฌ์ฉ์ ๋ชจ๋์ ํ์ํ ๋ชจ๋ ์๋น์ค๊ฐ ํ์ฑํ ๋ ํ์ ์์๋์ด์ผ ํจ์ ๋ํ๋
๋๋ค.
WantedBy=multi-user.target
systemctl ์ฃผ์ ๋ช ๋ น์ด
systemctl status [์๋น์ค๋ช
] # ์๋น์ค ์ํ ํ์ธํ๊ธฐ
systemctl start [์๋น์ค๋ช
] # ์๋น์ค ์์ํ๊ธฐ
systemctl stop [์๋น์ค๋ช
] # ์๋น์ค ์ค์งํ๊ธฐ
systemctl restart [์๋น์ค๋ช
] # ์๋น์ค ์ฌ์์ํ๊ธฐ
systemctl enable [์๋น์ค๋ช
] # ์๋น์ค ํ์ฑํํ๊ธฐ(์์คํ
๋ถํ
์์ ์์์ด ๋๋๋ก)
systemctl disable [์๋น์ค๋ช
] # ์๋น์ค ๋นํ์ฑํํ๊ธฐ(์์คํ
์ด ๋ถํ
๋์ด๋ ์์๋์ง ์๋๋ก)
์๋น์ค์ ๋ก๊ทธ ํ์ธํ๊ธฐ
journalctl -u [์๋น์ค ์ด๋ฆ]
journalctl -u [์๋น์ค ์ด๋ฆ] -f # ์ค์๊ฐ์ผ๋ก ๋ก๊ทธ ํ์ธํ๊ธฐ(tail)
์๋น์ค์ ๊ถํ
systemctl
๋ก ์์๋ ์๋น์ค๋ ๊ธฐ๋ณธ์ ์ผ๋ก root ๊ถํ์ผ๋ก ์คํ์ด๋ฉ๋๋ค.
๊ทธ๋ฌ๋ ๋ชจ๋ ์๋น์ค๊ฐ root ๊ถํ์ผ๋ก ์คํ๋๋ ๊ฒ์ ๋ณด์์ ์ข์ง ์์ต๋๋ค.
๋ฐ๋ผ์ User์ Group ์ง์์ด๋ฅผ ์ฌ์ฉํ์ฌ ํน์ ์ฌ์ฉ์ ๋ฐ ๊ทธ๋ฃน ๊ถํ์ผ๋ก ์๋น์ค๋ฅผ ์คํํ ์ ์์ต๋๋ค.
์ด๋ฌํ ์ค์ ์ [์๋น์ค๋ช
].service ํ์ผ ๋ด์ ์์นํ๊ณ ์ผ๋ฐ์ ์ผ๋ก /etc/systemd/system
๋๋ /lib/systemd/system
๋๋ ํฐ๋ฆฌ์ ์์นํด ์์ต๋๋ค.
# ์๋น์ค๊ฐ www-user ์ฌ์ฉ์์ www-group ๊ทธ๋ฃน์ ๊ถํ์ผ๋ก ์์๋๋๋ก ์ค์ .
[Service]
User=www-user
Group=www-group