리눅스 공부

systemctl과 service의 차이, 그리고 systemd까지 한 번에 이해하기

otopligrm 2026. 4. 2. 19:38

systemctl과 service는 둘 다 리눅스에서 시스템 서비스를 관리하는 명령어이다.
먼저 service와 systemctl을 이해하기 위해서는 먼저 systemd에 대한 이해가 필요하다. 

먼저 init process는 예전에 많이 사용했던 방식이다.

리눅스가 부팅시에 최초로 실행이되는 프로세스이다. 
이 프로세스는 부팅시에 OS운영에 필요한 service을 실행을 시킨다.



1. systemd

리눅스가 부팅되면 제일 먼저 여러 프로그램과 서비스들이 올라온다. 
예를 들면 네트워크, SSH 서버, 데이터베이스 등  OS운영을 하기 위해 

이러한 서비스들이 자동으로 시작이 되면 시스템이 정상적으로 동작한다.
예전에는 주로  init,SysVinit, service 같은 방식으로 관리를 하였지만 

점점 더 시스템이 복잡해지면서 빠르게 관리 할 필요가 생겼고, 

그래서 지금 많은 사람들이 사용하는 것이 systemd이다. 

 

즉 이러한 서비스들과 시스템의 전반적인것을 관리하는것이 systemd이라고 생각하면 될 것 같다. 
조금 더 쉽게 말하면 servicesystemd가 관리하는 여러 대상들중에서 하나이다.

또한 점점 systemd로 이용방식이 바뀌어가면서 service의 실행 방식이 바뀌었다.


systemd의 장점

  • service 병렬 실행가능
  • boot time감소
  • 자동 의존성 관리 등이 있다.


systemd의 역할은 주로 

  • 부팅 과정 관리
  • 서비스 시작/중지 관리
  • 서비스 간 의존성 관리
  • 자동 실행 관리
  • 시스템 상태 추적 등이 있다.


2. service

리눅스가 부팅되었을 때 생성되어서 종료될 때까지 실행되는 프로세스 및 설정 파일을 service 라고 한다.
service는 /etc/systemd/system 경로에 존재한다.
service는 주로 서비스의 시작.중지.재시작,상태 확인을 하는데에 명령어를 사용한다


1. service {서비스 이름} start: 서비스 시작
2. service {서비스 이름} stop: 서비스 종료
3. service {서비스 이름} restart: 서비스 재시작
4. service {서비스 이름} condrestart: 서비스가 동작하고 있는 경우 재시작
5. service {서비스 이름} reload: 서비스 설정 reload
6. service {서비스 이름} status: 서비스 상태 확인

 



3. systemctl

systemctl은 systemd를 제어하는 명령어이다.

systemctl의 핵심은 서비스를 관리한다는거다. 

예를 들어서

  •  SSH 서버를 켜고 싶다
  • 웹 서버가 살아 있는지 보고 싶다
  • 재부팅 후에도 자동 실행되게 하고 싶다
    이런 상황일때 systemctl를 사용한다. 

그러면 여기서 서비스가 무엇이냐. 

  • 서비스는 백그라운드에서 계속 동작을 하면서 특정 기능을 제공하는 프로그램이다. 

 

예를 들면 sshd: 원격 접속을 제공하는것처럼 이러한 서비스들을 사용자가 

매번 직접 실행을하지않아도 시스템이 알아서 부팅될 때 자동을 실행이되거나 필요할 때

제어를 할 수 있어야하는데 이런 제어를 systemctl가 한다.

또한 systemctl이 가장 많이 하는 일은 
1. 서비스가 실행중인지 여부를 판단: systemctl status sshd
2. 서비스 실행: systemctl start sshd
3. 서비스 중지: systemctl stop sshd
4. 서비스 다시 시작: systemctl restart sshd
5. 다시 불러오기 reload 가 있다