systemd(system daemon) ์ ๊ด๋ฆฌํ๋ systemctl ๋ช ๋ น์ด ์ฌ์ฉ๋ฒ
systemd ๋?
systemd(system daemon)์ ์ ํต์ ์ผ๋ก Unix ์์คํ ์ด ๋ถํ ํ์ ๊ฐ์ฅ ๋จผ์ ์์ฑ๋ ํ์ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ฅผ ์คํํ๋ init ์ญํ ์ ๋์ฒดํ๋ ๋ฐ๋ชฌ์ ๋๋ค. Red Hat ์ ๊ทผ๋ฌดํ๋ Lennart Poettering ์ด ์ฃผ๋์ ์ผ๋ก ๊ฐ๋ฐ์ ์์ํ๊ณ ์ง๊ธ์ RHEL/CentOS ์ Ubuntu ๋ Arch ๋ฑ ๋๋ถ๋ถ์ ๋ฆฌ๋ ์ค ์์คํ ์ ๊ณต์์ ์ผ๋ก ์ฑํ๋์์ต๋๋ค.
๋ค์๊ณผ ๊ฐ์ด ๋งค์ฐ ๋ณต์กํ ์ํคํ ์ฒ๋ฅผ ๊ฐ๊ณ ์์ง๋ง ์ผ๋ฐ ๋ฆฌ๋ ์ค ์ฌ์ฉ์ ์ ์ฅ์์๋ ์ต์๋จ์ systemd utillities ์ธ systemctl, journalctl ๋ฑ ์ ํธ๋ฆฌํฐ ์ฌ์ฉ๋ฒ์ ์์ฃผ๋ก ์ตํ๋ฉด ๋๋ฉฐ ์ด ๋ฌธ์์์๋ systemctl ์ฌ์ฉ ๋ฐฉ๋ฒ์ ๋ํด์ ์ค๋ช ํฉ๋๋ค.
์ถ์ฒ: https://en.wikipedia.org/wiki/Systemd#/media/File:Systemd_components.svg
Target ๊ด๋ฆฌ
linux systemctl ๋ช ๋ น์ผ๋ก ๋ถํ ํ๊ฒ(booting target) ์ง์ ํ๊ธฐ ์ฐธ๊ณ
service/chckconfig ๋ช ๋ น์ด์ ๋น๊ต
systemctl ๊ณผ service/chckconfig ๋ช ๋ น์ด ๋น๊ตํ ์ฐธ๊ณ
์๋น์ค ๊ด๋ฆฌ
์๋น์ค ์ํ ํ์ธ
status ๋ช ๋ น์ด ๋ค์ ํ์ธํ ์๋น์ค ๋ช ์ ์ฃผ๊ณ ์คํํ๋ฉด ๋ฉ๋๋ค.
systemctl status ์๋น์ค๋ช
๋ค์์ nginx ์๋น์ค์ ์ํ๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
systemctl status nginx
์๋น์ค ๊ตฌ๋
systemctl start mariadb
์๋น์ค ์๋ ์์
enable ๋ก ์ค์ ํ๋ฉด ๋ถํ ์ ์๋ ์์๋ฉ๋๋ค.
systemctl enable mariadb
์๋น์ค ๋ชฉ๋ก ๋ณด๊ธฐ
list-units ๋ช ๋ น์ด ์ฌ์ฉ
$ sudo systemctl list-units
์ค์น๋ ๋ชจ๋ unit ํ์ผ์ ๋ณด๋ ค๋ฉด list-unit-files ์ฌ์ฉ
$ sudo systemctl list-unit-files
์๋น์ค ๋ง์คํน
๋์ผํ ์ฉ๋๋ก ์ฌ์ฉํ๋ ์๋น์ค๊ฐ ๋์์ ์ค์น๋์ด ์์ ๊ฒฝ์ฐ ์ ๋๋ก ๋์ํ์ง ์๊ณ ์ถฉ๋ํ ์ ์์ต๋๋ค.
์๋ก ntpd ์ chronyd ๋ ๋์ผํ ์ฉ๋์ด๋ฏ๋ก 2๊ฐ๊ฐ ๋์์ ์ค์น๋์ด ์์ ๊ฒฝ์ฐ ๋ฌธ์ ๊ฐ ๋๋ฏ๋ก ์ด๋ด๋๋ service masking ๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ก ์ถฉ๋ํ๋ ์๋น์ค๋ฅผ ์ค์๋ก ์์ํ์ง ์๊ฒ ๋ฉ๋๋ค.
์๋ก ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ๋ฉด ์ค์๋ก ntpd ๋ฅผ ๊ตฌ๋ํด๋ ntpd ๊ฐ ์์๋์ง ์์.
$ sudo systemctl mask ntpd Created symlink from /etc/systemd/system/ntpd.service to /dev/null
์ค์๋ก ntpd ๋ฅผ ์คํํ๋ ๊ฒฝ์ฐ ์๋์ ๊ฐ์ ๋ฉ์์ง๊ฐ ์ถ๋ ฅ๋จ.
$ sudo systemctl start ntpd Failed to start ntpd.service: Unit is masked.
๋ง์คํน๋ ์๋น์ค๋ฅผ ํด์ ํ๋ ค๋ฉด systemctl unmask ๋ช ๋ น์ด๋ฅผ ์คํ
$ sudo systemctl unmask ntpd Removed symlink /etc/systemd/system/ntpd.service
์กฐ๊ฑด์ ๋ฐ๋ผ ์๋น์ค ๋ณด๊ธฐ
enabled ๋ ๋ชจ๋ ์๋น์ค
$ sudo systemctl list-units --state=enabled
๊ตฌ๋์ ์คํจํ ์๋น์ค
$ sudo systemctl list-units --state=failed
๋ชจ๋ active ๋ชฉ๋ก
$ sudo systemctl list-units --state=active
์ํ๊ฐ inactive ์ธ ๋ชฉ๋ก
$ sudo systemctl list-units --all --state=inactive
์๋น์ค์ค์ ์ํ๊ฐ running ์ธ ๋ชฉ๋ก
$ sudo systemctl list-units --type=service --state=running
ํน์ ์๋น์ค๊ฐ active ์ํ์ธ์ง ์กฐํ
์๋น์ค๊ฐ ํ์ฌ active ์ํ์ธ์ง ์กฐํํ ๊ฒฝ์ฐ is-active ๊ตฌ๋ฌธ ์ฌ์ฉ
$ sudo systemctl is-active nginx failed
์๋น์ค๊ฐ ๋ถํ ๋ ๊ตฌ๋๋๋๋ก ์ค์ ์ฌ๋ถ
์๋น์ค๊ฐ ํ์ฌ active ์ํ์ธ์ง ์กฐํํ ๊ฒฝ์ฐ is-eabled ๊ตฌ๋ฌธ ์ฌ์ฉ
$ sudo systemctl is-enabled nginx disabled
journalctl
Linux journalctl ์ฌ์ฉ๋ฒ ์ ์ฐธ๊ณ ํ์ธ์.