쿼카러버의 기술 블로그

[Linux] systemd란? (service 명령어, systemctl 명령어, init) 본문

Linux - Ubuntu

[Linux] systemd란? (service 명령어, systemctl 명령어, init)

quokkalover 2021. 9. 13. 00:46

리눅스를 조금이라도 사용해봤다면 항상 systemd라는 미지의 프로세스가 있다는 것을 눈치 챘을 것이다. PID1를 차지하고 있는 프로세스인 만큼 엄청 중요한 역할을 할 것만 같다. Systemd는 부팅부터 서비스 관리 로그 관리 등의 시스템 전반적인 영역에 걸쳐있는 프로세스다.

 

리눅스는 OS이기 때문에 전원을 ON 시킬 경우, 부팅이 되는 과정에서 시스템을 초기화하고, 환경 설정을 누군가 해줘야 한다.

 

systemd이전에는 init이라는 프로세스가 PID1를 차지하고 그 역할을 해주었는데, init 프로세스는 부팅 시작시 가장 먼저 시작되는 프로세스이고, 부모 프로세스로 동작한다. 하지만 init의 한계를 극복하기 위해 systemd가 등장하면서 호환성도 제공하고, init과는 다르게 병렬로 실행되어서 부팅속도가 빨라지는 등 다양한 기능을 제공한다.

 

흔히들 많이 쓰게 되는 systemctl 명령어도 systemd를 사용한다. 즉, service라는 이름으로 띄울 수 있는 systemd라는 init system과 이를 관리하기 위한 도구인 systemctl이 있는 것이다.

 

 

기존에는 시스템 서비스를 조작하기 위해 service 명령어를 사용했다.
시스템 서비스 명령어는 리눅스 /etc/init.d 디렉토리에 있는 링크파일들 중에 시작이나 종료 재시작을 선택할수 있었다.
/etc/init.d 디렉토리에는 리눅스에서 사용할 수 있는 프로그램 실행파일의 링크파일이 위치하는 곳으로 service 명령어를 사용하여 해당 프로그램을 시작하거나, 종류, 재시작을 명령할 수 있다. 이때 명령어와 함께 옵션을 부여하여 프로그램의 상태를 조절했다.

  • start : 중지된 서비스 시작
  • stop : 실행되는 서비스 중지
  • restart : 멈춘 후 실행 서비스 시작 또는 중지된 서비스 시작
  • reload : 연결을 끊지 않은 채 서비스 설정 리로드
  • status : 서비스 실행 여부를 나타냄

하지만 systemd를 쓰게 되면서 service 명령어말고, systemctl 명령어를 사용할 수 있다.

예를 들면

service vsftpd start

에서

systemctl start vsftpd

두 가지 구문 중 어떤걸 수행해도 구동되는 결과는 같지만, systemd를 사용하는 OS 버전 부터는 service 구문을 수행하면 redirecting to /bin/systemctl start ***.service라며 어차피 systemctl로 redirecting되어 찾는다.

 

이는 이전 버전에서는 init.d에서 서비스들을 관리했으나, 이후부터는 systemctl로 서비스를 제어하기 때문이다.

1. 정보

  • 1번 프로세스id를 가지고 있다.
    아래 명령어를 실행해서 확인해보자.
ps -p 1 ef
  • 설정 파일 : /etc/systemd 디렉토리에 위치한다.
ls /etc/systemd
bootchart.conf  journald.conf  logind.conf  system  system.conf  user  user.conf
  • 디렉토리 정보
    • /etc/systemd/ : configure
    • /lib/systemd/ : 바이너리 실행파일이 존재
    • /lib/systemd/system/ : Service, Target이 위치

2. 시스템 제어

  1. 서비스 제어
  • 서비스 목록 확인
  • systemctl list-unit-files
  • 서비스 시작
  • systemctl start [서비스명]
  • 서비스 종료
  • systemctl stop [서비스명]
  • 서비스 재시작
  • systemctl restart [서비스명]
  • 서비스 활성화
  • systemctl enable [서비스명]
  • 서비스 비활성화
  • systemctl disable [서비스명]
  • 서비스 갱신
  • systemctl reload [서비스명]

 

3. 시스템 명령

systemctl halt ( halt )

systemctl reboot ( 리부팅 )

Comments