해뜨기전에자자

systemd initd 본문

개발/linux & tools

systemd initd

조앙'ㅁ' 2018. 11. 25. 00:47


initd systemd


# 현상

ubuntu 14.04에서 systemctl 설치 후에

systemctl enable {path}

로 서비스를 등록해줘도 제대로 등록되지 않고, start/status를 해도 resource not found로 파일을 제대로 찾지 못했다.

```

systemctl list-units

```


# 원인

이유는 14.04 initd, 16.04 systemd가 default 이기 때문이었다.

process pid 1번 process인 init가 systemd로 바뀐거고

제대로 동작하도록 하려면 grub을 수정해서 init이 systemd로 동작하도록 변경해주어야한다


/etc/default/grub 파일에 아래와 같이 init=/lib/systemd/systemd 를 추가해주고 

```

GRUB_CMDLINE_LINUX="init=/lib/systemd/systemd ......"

```


```

update-grub

reboot

```


* 별다른 문제 없이 떠야 정상이겠지만 openstack vm이라면 systemd용 cloud-init 이 존재하지 않아서 필요한 네트워크 세팅등을 끝내지 못해 bootup 에 실패할 수 있다


# 해결

14.04에서 init=systemd로 잡고 올려서 쓰거나 그냥 16,04를 쓴다


# 더 찾아보기

## initd

initd synchronous, blocking


## upstart

upstart event-driven, asnynchronous

perfect backward compatibility with sysvinit

ubuntu 16.04 deprecated


## systemd

### 추세

최근 linux 배포판 대부분(cetnos >= 7 , ubuntu >= 16.04)은 systemd를 채택하고 있음

유닉스 철학(https://ko.wikipedia.org/wiki/유닉스_철학)을 위반했다는 비평을 받기도함. 

특히 1번 '각 프로그램이 하나의 일을 잘할 수 있게 만들것'


### 특징

systemd로 바꾸게 되면 기존의 sysVinit(/sbin/init, /etc/init.d/*, /etc/rc*.d) 데몬 관리용 스크립트들과 배포판별로 제공하던 런레벨 관리자도 사용하지 않음

systemd는 dbus(message bus system, interprocessing communication)를 이용해서 병렬적으로 실행하도록함

journalctl를 이용해 데몬 출력/로그 관리


### initd compatibility

TODO


### 유용할만한 command (몰랐던거 위주로)

```

# 부팅시 자동실행/비활성화

systemctl enable/disable


# 서비스 의존성, order

systemctl list-dependencies 


# 실패한 units 

systemctl --failed 


# -H 이용한 remote 조회(비번을 알거나 key가 있어야 동작함) 굳이 이렇게 해야되나싶다 ㅎㅎ

systemctl status sshd -H root@{ip}


# 시스템 부팅시간 분석

systemd-analyze # start up (kernel + initrd + userspace) 토탈 시간

systemd-analyze blame # 동작 시간 오래걸린거 부터 보임

systemd-analyze plot # svg파일 만들어준다. 신기..


# journalctl

journalctl

journalctl -b  # 부팅 로그

journalctl -f  # tailing

journalctl --since=today # 오늘 로그

```



'개발 > linux & tools' 카테고리의 다른 글

perf sched for Linux CPU scheduler analysis  (0) 2019.04.03
container 간단히  (0) 2019.01.17
haproxy vs nginx?  (0) 2018.05.16
route private network  (0) 2018.03.20
ssh proxy, ssh local fowarding  (0) 2018.03.20