사용자 도구

사이트 도구


linux:systemd

systemd

unit 모음 디렉토리

  • /etc/systemd/system
  • /run/systemd/system
  • /usr/local/lib/systemd/system
  • /usr/lib/systemd/system

사용법

# 지금 시작
systemctl start unit
 
# 종료
systemctl stop unit
 
# 재시작
systemctl restart unit
 
# booting 시 시작하게 설정
systemctl enable unit
 
# booting 시 시작하게 하면서, 지금 당장도 실행하게
systemctl enable --now unit

environment.d

  • 세션 시작시 환경 변수를 설정하기
  • script 는 안되고, NAME=value 형태만 된다.
  • /etc/environment.d/*.conf, ~/.config/environment.d/*.conf 파일에 환경변수를 NAME=VALUE 형태로 지정한다.
  • 스크립트를 넣을 수는 없다.
# 예시 /etc/environment.d/60-foo.conf:

FOO_DEBUG=force-software-gl,log-verbose
PATH=/opt/foo/bin:$PATH
LD_LIBRARY_PATH=/opt/foo/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
XDG_DATA_DIRS=/opt/foo/share:${XDG_DATA_DIRS:-/usr/local/share/:/usr/share/}

user 시작 프로그램

systemd bootchart

sudo apt install systemd-bootchart
systemd-analyze
systemd-analyze  blame
  • Linux Grub 에서 커널 설정에 init=/lib/systemd/systemd-bootchart 넣고 부팅하면 /run/log/bootchart-날짜-번호.svg 파일이 생성되고 이 이미지를 보고 부팅 성능 병목 지점을 찾을 수 있다.

systemd 는 어떻게 기존 SysVInit 의 /etc/init.d/* 서비스를 인식하는가

  • Systemd 로 변경했음에도 기존 SysVInit 이 사용하던 /etc/init.d/* 의 서비스를 systemd 명령으로 사용가능하다.
  • 이는 systemd-sysv-generator/etc/init.d/*의 서비스를 읽어서 동적으로 systemd unit 으로 바꿔주기 때문이다. (/usr/lib/systemd/system-generators/systemd-sysv-generator)
  • systemd unit 은 /run/systemd/generator.late*.service로 동적으로 생성된다.
  • systemd 는 init.d를 자동 인식하는게 아니라, systemd unit 이라고 인식하게 되는 것이다.
  • init.d의 서비스 파일에는 주석으로 LSB Headers라는 값이 들어있어서 systemd 로 변환하는 정보로 사용한다.

참조

linux/systemd.txt · 마지막으로 수정됨: 2023/05/18 10:06 저자 kwon37xi