systemd 관련하여 재정리를 시작한다.
요약하면 systemd 는 부팅 중 시작하는 서비스(혹 데몬)들을 관리하는 놈이라고 볼수 있다.
부팅 시점에 정의해논 서비스들을 병렬적으로 실행 할 수 있다. 특정 서비스 동작후에 원하는 서비스가 동작하도록 정의할수 있지만 명확한 타이밍에 동작 가능하도록 하는것은 아직 모르겠다. ㅎ
우분투 15.04 부터 upstart-job 대신 systemd 를 사용하고 있다.
이전까지 리눅스는 PID 1번 프로세스가 가장 먼저 실행되어 OS 에 필요한 각종 데몬들을 init 하였다.
이전에는 서비스 실행,중지를 service <service name> start | stop | restart 의 명령으로 제어했으나, systemd 를 사용하는 시스템에서는 systemctl start | stop | restart <unit name> 으로 관리하게 된다.
upstart-job에서는 데몬들을 service라는 네이밍을 붙였고, systemd에서는 unit이라는 이름을 사용한다.
systemd에서는 <unit name>.service이라는 파일을 systemctl enable [<unit name>.service] or [unit name] 명령으로 설치를 할 수 있다.(ini 포맷사용)
systemctl enable [unit name] 명령어를 실행하면 관련 서비스를 /etc/systemd/system/[target]/ 경로에 링크파일을 생성한다.
systemctl disable[unit name] 명령어를 실행하면 링크파일을 삭제한다.
- systemd는 최소한의 서비스만을 실행시키고 병렬화해서 실행시키는데 주안점을 두고 있기 때문에 기존에 순차적 방식으로 처리하는 SysV에 비해서 부팅속도가 빠른 편이다.
- 부팅 시간을 단축 시킬(즉, 불필요한 프로세스가 있는지 여부부터 오동작으로 인해 시간을 많이 잡아먹는지) 방안에 대해서 생각해 볼 수 있다.
- systemctl 명령어
systemd 와 관련된 명령어를 수행한다.
$ systemctl == $systemctl list-units // 동일한 명령으로 list-units 들을 보여준다 |
- 런레벨은 target 으로 관리
SysV Runlevel |
Systemd Target |
Notes |
0 |
runlevel0.target, poweroff.target |
시스템을 중지 |
1,s, single |
runlevel1.target, rescue.target |
단일 사용자 모드 |
2, 4 | runlevel2.target, runlevel4,target, multi-user.target |
사용자 정의, 기본 3과 동일 |
3 |
runlevel3.target , multi-user.target |
다중 사용자, 그래픽 사용하지않음. 사용자는 콘솔이나 네트워크를 통해 다중 접속할 수 있다. |
5 |
runlevel5.target, graphical.target |
다중사용자, 그래픽. 런레벨3에서 그래픽 추가된 서비스를 제공 |
6 |
runlevel6.target, reboot.target |
재부팅 |
emvergency |
emergency.target |
Emergency shell |
현재 사용하는 런레벨을 확인한다.
# systemctl get-default
graphical.target
- 로그관리 (syslog 에서 지정하는 debug, info, err 등) 조회도 가능하다.
- 유용한 명령어
- systemd-analyze : 부팅에 걸린시간 표시 (tcc8935 없음)
- systemd-analyze blame : 부팅시 서비스별 걸린 시간표시 (tcc8935 없음)
- journalctl : 부팅을 포함한 전체적인 시스템 로그
- journalctl -b : 마지막 부팅 이후 시스템 로그
- hostnamectl : 호스트 이름표시
- hostnamectl set-hostname [변경이름] : 호스트이름 변경
- 서비스 파일 등록하는 법
- 부팅시 서비스가 실행하게 된다.
- 재부팅시 적용됨
- /lib/system/systemd 폴더와 /etc/systemd/system 폴더 안에 관련 파일을 확인하고 각 시스템 폴더에 링크파일을 생성해 주는 역할을 한다.
$ systemctl enable [serviceName|serviceName.service]
$ systemctl enable XX 나 systemctl enable XX.service
- 서비스 파일 해제하는 법
- 서비스가 등록된 링크파일을 삭제한다.
- 재부팅시 적용됨
$ systemctl disable [serviceName|serviceName.service]
$ systemctl disable XX 나 systemctl disable XX.service
- 관련 서비스 start
- 관련된 시스템이 동작하도록 한다.
- 현재 각 서비스 파일을 보면 Restart=on-failure 로 등록되어 어서 앱이 죽거나 kill 시 자동 restart 되어지고 있다. 재실행하지 않으려면 주석처리 -> #Restart=on-failure
$ systemctl start XX
- 관련 서비스 stop
- 관련된 시스템을 중지시킨다.
- 서비스가 동작시 해당 어플리케이션 파일을 변경시킬 수 없다. 소스변경이 이루어질시 해당 하는 서비스를 중지시키고 해야함.
$ systemctl stop XX
'Linux > Systemd' 카테고리의 다른 글
[SYSTEMD] INSTALL 섹션 옵션 (0) | 2016.07.18 |
---|---|
[Systemd] Unit .mount 설명 (0) | 2016.07.12 |
journalctl 정의 (0) | 2016.07.12 |
Systemd 내용 (2) | 2016.06.15 |