ENCORE CLOUD ARCHITECTURE TIL 3/9 Linux CentOS

신민창·2021년 3월 9일
0

TIL

목록 보기
22/46

Systemd

현재 사용중인 RHEL(CentOS) 7버전 이후, Ubuntu 18.04 부터
프로세스 및 서비스 관리
systemd 이전의 프로세스 및 서비스 관리 주체: init

init

systemd 이전의 프로세스 및 서비스 관리 주체
모든 프로세스의 부모 프로세스
1번 PID를 가지고 있음
0번 PID: Swapper 특별히 역할이 없는 IDLE 프로세스

‘런 레벨’을 사용하여 시스템의 상태를 정의하고 제어 (Run Level)

리눅스의 런 레벨

0 : Halt - 시스템이 종료되어 있는 상태
1 : Single-User mode - 관리자 계정만 사용 가능한 상태
2 : Multi-User mode - 다중 사용자 사용 가능
3 : Multi-User mode + Networking - 다중사용자+네트워크 지원
5 : Multi-User mode + Networking + GUI 
6 : Reboot
init < 레벨 번호> : 해당 런 레벨로 동작상태 변경
init 0 : 전원 종료
init 6 : 리부팅
/etc/inittab : 기본 런 레벨 지정

서비스 관련 스크립트

데몬(Daemon) : 서비스

/etc/init.d : init을 통해 관리할 서비스 스크립트 위치
# service <데몬 이름> {start|stop|restart}
# /etc/init.d/sshd {start|stop|restart}

/etc/rc.d/init.d 에 같은 스크립트 저장
/etc/rc.d/rc#.d
S##, K## 등 파일이 존재함
rc1.d/S… => 런레벨 1이 될때 S## 뒤에 따라오는 서비스는 실행
rc1.d/K... => 런레벨 1이 될때 K## 뒤에 따라오는 서비스는 중지

systemd의 특징
부팅시 병렬화 처리 : 부팅 과정에서 문제 발생시에도 다른 부분은 정상적으로 부팅 진행
cgroup: Control Group 개념을 통해 자원 관리
서비스(데몬)의 종속성 관리
systemd가 서비스를 관리 : 스크립트 방식이 아닌 표준화된 방식

systemctl를 사용한 서비스 상태 확인 명령
systemctl <서브커맨드> [Argument]
서비스 상태 확인

# systemctl 

현재 시스템의 모든 systemd 관련 개체 출력
-t, --type : 특정 타입 지정하여 출력

# systemc --type service : 서비스만 출력
# systemctl status <서비스 이름>
# systemctl status sshd.service
# systemctl is-active <서비스이름>
현재 서비스의 동작상태 확인
# systemctl is-enable <서비스이름>
서비스의 활성화(재부팅시 구동여부) 확인
# systemctl list-unit-files --type service

각 서비스 별 활성화/비활성화(enabled/disabled) 상태
static : 임의로 enable/disable 되지 않는 항목

서비스 상태 종류

Active : 현재 동작하고 있음
Inactive : 현재 동작하지 않고 있음
Enable : 재부팅 시 동작하도록 설정 (재부팅시 실행)
Disable : 재부팅 시 동작하도록 설정 (재부팅시 실행하지않음)

systemctl을 사용한 서비스 상태 변경 명령

	systemctl <서브커맨드> <서비스명>
    

서브커맨드

start : 즉시 지정한 서비스 구동
stop : 즉시 지정한 서비스 중지
restart : 즉시 지정한 서비스 중지 후 다시 시작
reload : 즉시 서비스 설정 다시 읽어들임
enable : 재부팅 시 서비스 구동여부 설정(활성화)
disable : 재부팅 시 서비스 구동여부 설정(비활성화)

마스크 설정

systemctl mask <서비스이름>

서로 충돌이 발생할 수 있는 서비스에 대한 차단
해당 서비스를 구동하기 위한 스크립트/서비스파일 등을 차단

systemctl unmask <서비스이름>

0개의 댓글