โš™๏ธ Devops/๐Ÿง Linux

[Linux] systemctl ๋ช…๋ น์–ด๋กœ ์„œ๋น„์Šค ๋“ฑ๋ก, ์ƒ์„ฑ, ์‚ญ์ œ

2022. 3. 18. 21:15
๋ชฉ์ฐจ
  1. Linux Systemd๋ž€ ๋ฌด์—‡์ธ๊ฐ€?
  2. Systemd๋ฅผ ์ด์šฉํ•ด์„œ ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค๊ธฐ
  3. ํ…Œ์ŠคํŠธ์šฉ Script ์ƒ์„ฑ
  4. ์„œ๋น„์Šค ์ƒ์„ฑ ๋ฐ ๋“ฑ๋ก
  5. systemctl ๋ช…๋ น์–ด ๋ชจ์Œ
  6. systemctl start: ์„œ๋น„์Šค ์‹œ์ž‘
  7. systemctl status: ์„œ๋น„์Šค ์ƒํƒœ ํ™•์ธ
  8. systemctl stop: ์„œ๋น„์Šค ์ค‘์ง€
  9. systemctl restart: ์„œ๋น„์Šค ์žฌ์‹œ์ž‘
  10. systemctl enable: ์žฌ๋ถ€ํŒ… ์‹œ ์ž๋™ ์‹คํ–‰๋˜๋„๋ก ์„ค์ •
  11. systemctl disable: ์žฌ๋ถ€ํŒ… ์‹œ ์ž๋™ ์‹คํ–‰๋˜์ง€ ์•Š๋„๋ก ์„ค์ •
  12. systemctl reload: ์„œ๋น„์Šค ๋ฆฌ๋กœ๋“œ
  13. systemctl daemon-reload: ์ „์ฒด ์„œ๋น„์Šค ๋ฆฌ๋กœ๋“œ
  14. REFERENCES
๋ฐ˜์‘ํ˜•

Linux Systemd๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

https://en.wikipedia.org/wiki/Systemd

๋ฆฌ๋ˆ…์Šค๋ฅผ ์‹คํ–‰์‹œํ‚ค๋ฉด systemd๋ผ๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ํ•œ๋ฒˆ ์ฏค ๋ณด์‹  ์ ์ด ์žˆ์œผ์‹ค ๊ฒ๋‹ˆ๋‹ค. systemd๋Š” PID1์— ์†ํ•ด์žˆ์„ ๋งŒํผ ๊ต‰์žฅํžˆ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•˜๋Š”๋ฐ ๋ฐ”๋กœ Linux ์šด์˜์ฒด์ œ์šฉ ์‹œ์Šคํ…œ ๋ฐ ์„œ๋น„์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

PID1์ด๋ฏ€๋กœ ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์—†๊ณ  Linux๊ฐ€ ๋ถ€ํŒ…๋˜์—ˆ์„ ๋•Œ ๊ฐ€์žฅ ๋จผ์ € ์‹คํ–‰๋˜๋ฉฐ ์‚ฌ์šฉ์ž๊ฐ€ Linux๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ดˆ๊ธฐ ์„œ๋น„์Šค๋“ค์„ ๋ณ‘๋ ฌ์ ์œผ๋กœ ์‹คํ–‰์‹œ์ผœ์ฃผ๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ์ข…๋ฃŒ๋˜์–ด ์‹œ์Šคํ…œ ๋ฐ ์„œ๋น„์Šค๋ฅผ ์ข…๋ฃŒ์‹œํ‚ค๋Š” ์—ญํ• ๋„ ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ์กด์—๋Š” ๊ฐ€์žฅ ์˜ค๋ž˜๋œ init ์‹œ์Šคํ…œ ์ค‘ ํ•˜๋‚˜์ธ Unix System V init system(SysV)์™€ ๊ฐ™์€ init ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ๋Š”๋ฐ 2015๋…„ ๋ถ€ํ„ฐ systemd๋ฅผ ๊ณต์‹ ์ฑ„ํƒํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ฒ˜์Œ์—” ๋งŽ์€ ์šฐ๋ ค ๊ณก์ ˆ์ด ์žˆ์—ˆ์ง€๋งŒ ๊ธฐ์กด init ์‹œ์Šคํ…œ์— ๋น„ํ•ด ํ›จ์”ฌ ๋น ๋ฅธ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ์™€ ์„œ๋น„์Šค ๊ฐ„ ์ข…์†์ ์ธ ์‹คํ–‰๋„ ๋”์šฑ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋ฉฐ ์„œ๋น„์Šค๋“ค์„ ๊ด€๋ฆฌํ•˜๋Š” ์ธก๋ฉด์—์„œ ํ›จ์”ฌ ๋‚˜์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ๊ณต์‹์œผ๋กœ ์ฑ„ํƒํ•œ๊ฒŒ ์•„๋‹๊นŒ ์ƒ๊ฐ๋ฉ๋‹ˆ๋‹ค.

Systemd๋ฅผ ์ด์šฉํ•ด์„œ ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค๊ธฐ

systemd๋Š” ์„œ๋น„์Šค๋“ค์„ ์‹คํ–‰์‹œํ‚ค๊ธฐ ์œ„ํ•œ ์Šคํฌ๋ฆฝํŠธ๋“ค์„ /etc/systemd/system/ ์—์„œ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ls -al ๋ช…๋ น์–ด๋กœ ์‚ดํŽด๋ณด๋ฉด ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋กœ ๊ฐ€๋“ํ•œ ๊ฒƒ์„ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๋ถ€ํŒ… ์‹œ ์‹คํ–‰์‹œํ‚ค๊ณ  ์‹ถ์€ ์„œ๋น„์Šค๊ฐ€ ์žˆ๋‹ค๋ฉด ์œ„ ๋””๋ ‰ํ† ๋ฆฌ์— ์„œ๋น„์Šค๋ฅผ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋กœ ์—ฐ๊ฒฐ์‹œ์ผœ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ์šฉ Script ์ƒ์„ฑ

์•„๋ž˜์™€ ๊ฐ™์ด ํ…Œ์ŠคํŠธ์šฉ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋งŒ๋“ค์–ด๋ด…์‹œ๋‹ค!

$ vi /root/my-test-script.sh

#!/bin/bash

while :
do
	echo -e "Hi! this service is run by systemd"
	sleep 1
done

์„œ๋น„์Šค ์ƒ์„ฑ ๋ฐ ๋“ฑ๋ก

$ vi /root/my-systemd-daemon.service

[Unit]
Description=My Systemd Daemon

[Service]
Type=simple
ExecStart=/root/my-test-script.sh
Restart=on-failure

[Install]
WantedBy=multi-user.target
$ sudo ln -s /root/my-systemd-daemon.service /etc/systemd/system/my-systemd-daemon.service

์‚ฌ์‹ค ๋ฐ”๋กœ /etc/systemd/system ์•„๋ž˜์—๋‹ค๊ฐ€ service๋ฅผ ์ƒ์„ฑํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ด€๋ฆฌ์˜ ํŽธ์˜์„ฑ์„ ์œ„ํ•ด์„œ ํ…Œ์ŠคํŠธ์šฉ ์Šคํฌ๋ฆฝํŠธ์™€ ๋™์ผ ๋””๋ ‰ํ† ๋ฆฌ์— ์œ„์น˜์‹œ์ผฐ์Šต๋‹ˆ๋‹ค.

systemctl ๋ช…๋ น์–ด ๋ชจ์Œ

systemctl start: ์„œ๋น„์Šค ์‹œ์ž‘

์„œ๋น„์Šค๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๋ช…๋ น์–ด ์ž…๋‹ˆ๋‹ค.

$ systemctl start my-systemd-daemon

systemctl status: ์„œ๋น„์Šค ์ƒํƒœ ํ™•์ธ

์„œ๋น„์Šค์˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ๋ช…๋ น์–ด ์ž…๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•œ ๋กœ๊ทธ๋„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

$ systemctl status my-systemd-daemon

systemctl stop: ์„œ๋น„์Šค ์ค‘์ง€

์„œ๋น„์Šค๋ฅผ ์ค‘์ง€ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด ์ž…๋‹ˆ๋‹ค.

$ systemctl stop my-systemd-daemon

 

systemctl restart: ์„œ๋น„์Šค ์žฌ์‹œ์ž‘

์„œ๋น„์Šค๋ฅผ ์ค‘์ง€ -> ์‹œ์ž‘ ์ˆœ์œผ๋กœ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

$ systemctl restart my-systemd-daemon

systemctl enable: ์žฌ๋ถ€ํŒ… ์‹œ ์ž๋™ ์‹คํ–‰๋˜๋„๋ก ์„ค์ •

enable์€ ๋‹จ์ง€ ์‹œ์ž‘ ํ”„๋กœ๊ทธ๋žจ์— ์ถ”๊ฐ€์‹œ์ผœ ๋ถ€ํŒ… ์‹œ ์‹คํ–‰๋˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

$ systemctl enable my-systemd-daemon

systemctl disable: ์žฌ๋ถ€ํŒ… ์‹œ ์ž๋™ ์‹คํ–‰๋˜์ง€ ์•Š๋„๋ก ์„ค์ •

enableํ•œ ์„œ๋น„์Šค๋ฅผ ์‹œ์ž‘ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ œ์™ธ์‹œํ‚ค๊ธฐ ์œ„ํ•ด disable ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

$ systemctl disable my-systemd-daemon

systemctl reload: ์„œ๋น„์Šค ๋ฆฌ๋กœ๋“œ

reload๋Š” restart์™€ ๋‹ค๋ฅด๊ฒŒ ์„œ๋น„์Šค๋ฅผ ์ข…๋ฃŒํ–ˆ๋‹ค๊ฐ€ ์‹คํ–‰์‹œํ‚ค๋Š”๊ฒŒ ์•„๋‹Œ ํ•ด๋‹น ์„œ๋น„์Šค์˜ configuration๋งŒ ์ˆ˜์ •ํ–ˆ์„ ๊ฒฝ์šฐ ๋น ๋ฅด๊ฒŒ ๋ฆฌ๋กœ๋“œํ•˜์—ฌ ๋ฐ˜์˜ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

$ systemctl reload my-systemd-daemon

systemctl daemon-reload: ์ „์ฒด ์„œ๋น„์Šค ๋ฆฌ๋กœ๋“œ

daemon-reload๋Š” reload์™€ ๋‹ค๋ฅด๊ฒŒ ์ „์ฒด ์„œ๋น„์Šค์— ๋Œ€ํ•ด์„œ configuration์„ ๋ฆฌ๋กœ๋“œ ํ•ฉ๋‹ˆ๋‹ค.

$ systemctl daemon-reload

REFERENCES

 

Creating and Managing Daemon Services in Linux using Systemd

Introduction

medium.com

 

๋ฐ˜์‘ํ˜•
์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)
  1. Linux Systemd๋ž€ ๋ฌด์—‡์ธ๊ฐ€?
  2. Systemd๋ฅผ ์ด์šฉํ•ด์„œ ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค๊ธฐ
  3. ํ…Œ์ŠคํŠธ์šฉ Script ์ƒ์„ฑ
  4. ์„œ๋น„์Šค ์ƒ์„ฑ ๋ฐ ๋“ฑ๋ก
  5. systemctl ๋ช…๋ น์–ด ๋ชจ์Œ
  6. systemctl start: ์„œ๋น„์Šค ์‹œ์ž‘
  7. systemctl status: ์„œ๋น„์Šค ์ƒํƒœ ํ™•์ธ
  8. systemctl stop: ์„œ๋น„์Šค ์ค‘์ง€
  9. systemctl restart: ์„œ๋น„์Šค ์žฌ์‹œ์ž‘
  10. systemctl enable: ์žฌ๋ถ€ํŒ… ์‹œ ์ž๋™ ์‹คํ–‰๋˜๋„๋ก ์„ค์ •
  11. systemctl disable: ์žฌ๋ถ€ํŒ… ์‹œ ์ž๋™ ์‹คํ–‰๋˜์ง€ ์•Š๋„๋ก ์„ค์ •
  12. systemctl reload: ์„œ๋น„์Šค ๋ฆฌ๋กœ๋“œ
  13. systemctl daemon-reload: ์ „์ฒด ์„œ๋น„์Šค ๋ฆฌ๋กœ๋“œ
  14. REFERENCES
'โš™๏ธ Devops/๐Ÿง Linux' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Linux] scp ๋ช…๋ น์–ด - ์„œ๋ฒ„๋กœ ํŒŒ์ผ ์ „์†ก ๋ฐ ๋‹ค์šด
  • [Ubuntu] Apache(์•„ํŒŒ์น˜) SSL ์ ์šฉ
iseunghan
iseunghan
๊พธ์ค€ํ•˜๊ฒŒ ์—ด์‹ฌํžˆ..
iseunghan
iseunghan

๊ณต์ง€์‚ฌํ•ญ

  • ์–ด์ œ๋ณด๋‹ค ๋‚˜์€ ์˜ค๋Š˜์ด ๋˜๊ธฐ ์œ„ํ•ด ๐Ÿ”ฅ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (261)
    • ๐Ÿ’ Spring (14)
      • ๊ฐœ๋… ๋ฐ ์ดํ•ด (2)
      • Spring ํ•ต์‹ฌ ๊ธฐ์ˆ  (24)
      • Spring REST API (8)
      • Spring MVC, DB ์ ‘๊ทผ ๊ธฐ์ˆ  (7)
      • Spring Security (23)
      • Spring in Action (1)
    • ๐ŸŒป JAVA (84)
      • ์ž๋ฐ” ORM ํ‘œ์ค€ JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ (20)
      • ์•Œ๊ณ ๋ฆฌ์ฆ˜, ์ž๋ฃŒ๊ตฌ์กฐ (13)
      • ๋””์ž์ธ ํŒจํ„ด (7)
      • ์ •๋ฆฌ์ •๋ฆฌ์ •๋ฆฌ (43)
      • JUnit (1)
    • ๐Ÿ”– Snippets (3)
      • Javascript (3)
    • โš™๏ธ Devops (22)
      • โ› Git (11)
      • ๐Ÿณ Docker (6)
      • ๐Ÿง Linux (3)
      • ๐ŸŒˆ Jenkins (1)
      • ๐Ÿ“ฌ Kafka (1)
    • ๐Ÿ’ฌ ETC.. (4)
      • ๐Ÿ’ป macOS (2)
    • ๐ŸŒง๏ธ ORM (2)
      • JPA (2)
    • ๐Ÿ Python (2)
    • ๐Ÿ“š Databases (15)
      • ์˜ค๋ผํด๋กœ ๋ฐฐ์šฐ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐœ๋ก ๊ณผ ์‹ค์Šต(2ํŒ) (3)
      • RealMySQL 8.0 (8)
    • ๐Ÿ”ฅ Computer Science (5)
      • ๐Ÿ“ก ๋„คํŠธ์›Œํฌ (5)
    • ๐Ÿท๏ธ ํ˜‘์—… (1)
    • ๐Ÿ“œ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ (38)
      • BAEKJOON\์ˆ˜ํ•™ 1, ์ˆ˜ํ•™ 2 (8)
      • BAEKJOON\์žฌ๊ท€ (5)
      • BAEKJOON\๋ธŒ๋ฃจํŠธ ํฌ์Šค (3)
      • BAEKJOON\์ •๋ ฌ (1)
      • BAEKJOON\๋ฐฑํŠธ๋ž˜ํ‚น (5)
      • BAEKJOON\BFS, DFS (6)
      • BAEKJOON\์ด๋ถ„ํƒ์ƒ‰ (1)
      • BAEKJOON\๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ (9)
      • BAEKJOON\๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜ (0)
    • โœจ ISEUNGHAN (1)

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๊ธ€

์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
๋ฐ˜์‘ํ˜•
hELLO ยท Designed By ์ •์ƒ์šฐ.
iseunghan
[Linux] systemctl ๋ช…๋ น์–ด๋กœ ์„œ๋น„์Šค ๋“ฑ๋ก, ์ƒ์„ฑ, ์‚ญ์ œ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๊ฐœ์ธ์ •๋ณด

  • ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ
  • ํฌ๋Ÿผ
  • ๋กœ๊ทธ์ธ

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.