systemd
systemd는 부팅부터 서비스 관리, 로그 관리 등의 시스템 전반적인 영역에 걸쳐있는 중요한 프로세스이다.
리눅스는 OS이기 때문에 서버 전원을 'On' 시킬 경우, 부팅이 되는 과정에서 시스템을 초기화하고, 환경 설정을 누군가 해줘야한다.
systemd 이전에는 init 프로세스가 PID 1를 차지하여 그 역할을 대신 해주었는데, init 프로세스의 한계를 극복하기 위해 systemd가 등장하면서 호환성도 제공하고 기존 init 프로세스와는 다르게 병렬로 실행되어 부팅 속도가 개선되는 등 다양한 기능을 제공하고 있다.
시스템 운영 시 많이 쓰게되는 systemctl
명령어도 systemd를 사용한다. 즉, service라는 이름으로 띄울 수 있는 systemd라는 init system과 이를 관리하기 위한 도구인 systemctl이 있는 것이다.
systemctl
RHEL 7에 도입된 서비스를 제어하는 명령어.
systemd service가 등록되어 있지 않아도 service를 실행하면 자동으로 systemctl에 등록된다.
(/run/systemd
)
또한 /usr/lib/systemd/system
하위에 확장자가 .service인 파일을 만들면 systemctl
명령을 통해 서비스를 제어할 수 있다.
(/usr/lib/systemd/system/<서비스이름>.service
)
참고로 CentOS 7 버전 이전에는 기존 서비스 관리 명령어였던
chkconfig
를 통해 /etc/init.d/*에 등록된 서비스들을 제어했었다.
CentOS 7 버전 이후에서는systemctl
를 통해 서비스를 관리한다.
명령의 종류
명령어 | 설명 |
---|---|
systemctl start <서비스> |
서비스 시작 |
systemctl stop <서비스> |
서비스 중지 |
systemctl status <서비스> |
서비스 상태 확인 |
systemctl restart <서비스> |
서비스 재시작 (중지 -> 시작) |
systemctl reload <서비스> |
서비스를 중지하지 않고 설정 값을 반영 (서비스가 중지되면 안되는 경우 사용) |
systemctl enable <서비스> |
시스템이 재부팅하면 자동으로 서비스 실행되도록 등록 |
systemctl disable <서비스> |
enable한 서비스 해제 |
systemctl list-units --type service [--all] |
[모든] 서비스 목록 보기 |
systemctl list-unit-files --type service |
모든 서비스의 현재 활성화 상태 보기 |
systemctl list-unit-files --type service --state=enabled |
enabled 라고 표시된 모든 활성화 서비스 보기 |
systemctl daemon-reload |
설정들을 데몬에 즉시 반영함 |
systemctl kill [서비스명] |
서비스와 관련된 프로세스까지 모두 종료 시킴 |
systemctl reset-failed |
서비스를 disable 했는데도 계속 보이면 리셋 시키도록 함 |
service 명령어와 비교
service | systemctl | 설명 |
---|---|---|
service name start |
systemctl start name.service |
서비스 시작 |
service name stop |
systemctl stop name.service |
서비스 중지 |
service name restart |
systemctl restart name.service |
서비스 재시작 |
service name condrestart |
systemctl try-restart name.service |
서비스가 구동중이었을 경우에만 재시작 |
service name reload |
systemctl reload name.service |
설정 재구동 |
service name status |
systemctl status name.service systemctl is-active name.service |
서비스 구동 여부 확인 |
service --status-all |
systemctl list-units --type service --all |
모든 서비스의 상태 표시 |