리눅스 서버에서 시스템 서비스를 실행하기 위해 systemctl 또는 service 명령어를 사용한다. 이 글에서는 해당 명령어들이 어떤 의미를 가지고 어떻게 동작하는지, 시스템 서비스는 어떤 것들인지에 대해서 정리한다.
1. systemd
service와 systemctl을 이해하기 위해서는 먼저 systemd에 대한 이해가 필요하다. systemd는 리눅스에서 PID 1번을 차지하고 있는 프로세스로 리눅스에서 실행되는 서비스, 데몬들을 관리하는 역할을 한다. 데몬이란, 사용자가 직접적으로 제어하지 않고 백그라운드에서 여러 작업을 수행하는 프로그램을 말한다.
리눅스가 부팅되면 네트워크 요청을 처리하는 데몬, 하드웨어 동작을 처리하는 데몬 등 시스템에 필요한 여러 데몬들이 실행된다. 리눅스에서는 이러한 데몬들을 service 파일로 설정하여 실행하고 있으며, systemd가 이러한 서비스들을 관리한다.
systemd 이전에는 init이라는 프로세스가 이러한 역할을 해주었다. 리눅스 실행시 가장 먼저 시작되어 1번 PID를 가지며 다른 모든 프로세스들의 직간접적인 부모 역할을 한다. 지금은 여러가지 이유로 systemd가 init을 대체하여 해당 역할을 하고있다.
2. service
service는 시스템 데몬 및 사용자 정의 데몬을 의미한다. 리눅스가 부팅되었을 때 생성되어서 종료될 때까지 실행되는 프로세스 및 설정 파일을 service 라고 한다.
service는 /etc/systemd/system 경로에 존재한다. '{서비스이름}.service'의 형식으로 파일들이 존재하며, 이 경로에 있는 service들은 systemd에 의해 관리된다.
- service 명령어
다음과 같은 service 명령어를 사용하여 시스템 서비스들을 제어할 수 있다.
명령어 | 동작 |
service {서비스 이름} start | 서비스 시작 |
service {서비스 이름} stop | 서비스 종료 |
service {서비스 이름} restart | 서비스 재시작 |
service {서비스 이름} condrestart | 서비스가 동작하고 있는 경우 재시작 |
service {서비스 이름} reload | 서비스 설정 reload |
service {서비스 이름} status | 서비스 상태 확인 |
service --status-all | 서비스 목록 확인 |
최근의 OS에서는 service 명령어들이 systemctl로 대체되어서 service 명령어를 사용하는 경우 'redirecting to /bin/systemctl ...'와 같은 안내문이 나오며 systemctl로 실행되는 것을 확인할 수 있다.
3. systemctl
systemctl은 위의 service 명령어와 같이 service들을 관리하는 명령어이다. CentOS7 버전부터 사용되고 있다.
- systemctl 명령어
명령어 | 동작 |
systemctl start {서비스 이름} | 서비스 시작 |
systemctl stop {서비스 이름} | 서비스 종료 |
systemctl restart {서비스 이름} | 서비스 재시작 |
systemctl try-restart {서비스 이름} | 서비스가 동작하고 있는 경우 재시작 |
systemctl reload {서비스 이름} | 서비스 설정 reload |
systemctl status {서비스 이름} systemctl is-active {서비스 이름} |
서비스 상태 확인 |
systemctl list-units --type service | 서비스 목록 확인 |
systemctl enable {서비스 이름} | 부팅시 자동시작 활성화 |
systemctl disable {서비스 이름} | 부팅시 자동시작 비활성화 |
[Reference]
service, systemctl 란?
간단 설명 service와 systemctl을 이해하기 위해서, 데몬이라는 개념에 대해서 알고 있어야 한다. 데몬이란 사용자가 직접적으로 제어하지 않고, 백그라운드에서 여러 작업을 하는 프로그램을 말한
junb51.tistory.com
[Linux] systemd란? (service 명령어, systemctl 명령어, init)
리눅스를 조금이라도 사용해봤다면 항상 systemd라는 미지의 프로세스가 있다는 것을 눈치 챘을 것이다. PID1를 차지하고 있는 프로세스인 만큼 엄청 중요한 역할을 할 것만 같다. Systemd는 부팅부
etloveguitar.tistory.com
12.2. systemctl을 사용하여 시스템 서비스 관리 | Red Hat Product Documentation
형식멀티 페이지단일 페이지모든 문서를 PDF로 표시
docs.redhat.com
'Computer Science > OS' 카테고리의 다른 글
[OS] Memory Management (0) | 2021.10.23 |
---|---|
[OS] Thread & Multithreading (0) | 2021.10.22 |
[OS] Process Synchronization (0) | 2021.10.22 |
[OS] CPU scheduling (0) | 2021.10.21 |
[OS] Process Scheduling (0) | 2021.10.21 |