반응형

목차

  1. systemd
  2. 주요 기능
  3. Systemd target 선택
  4. systemd에서 target을 활용하기 위한 systemctl 명령어 활용

systemd

systemd는 전통적인 System V init 시스템(SysVinit)을 대체하기 위해 많은 Linux 배포판에서 사용되는 초기화 시스템 및 시스템 관리자다. Lennart Poettering과 Kay Sievers가 개발했으며 2010년에 처음 출시되었다. systemd는 현대적인 디자인, 효율적인 프로세스 관리 및 다양한 Linux 구성 요소와의 통합으로 인기를 얻었다.

systemd는 시작하는 동안 사용자 공간을 부트스트래핑하고, 시스템 서비스를 관리하고, 시스템 수명 주기 동안 일관된 상태를 유지하는 역할을 한다. 


주요 기능
  • 병렬화
    systemd는 서비스를 동시에 시작하여 멀티 코어 프로세서를 활용하여 더 빠른 부팅 시간을 허용한다.

  • 종속성
    systemd는 복잡한 서비스 종속성을 관리하여 서비스가 올바른 순서로 그리고 종속성이 충족될 때만 시작되도록 한다.

  • Cgroups
    systemd는 제어 그룹(cgroups)을 사용하여 각 서비스에 대한 리소스를 관리하고 격리하여 시스템 안정성과 리소스 활용도를 향상시킨다.

  • 서비스 관리
    systemd는 서비스를 모니터링하고 감독하며 장애 또는 충돌이 발생할 경우 자동으로 다시 시작한다. 이는 시스템 안정성을 높이고 다운타임을 줄인다.

  • 로깅
    systemd에는 전체 시스템의 로깅을 처리하는 'journald' 서비스가 포함되어 있다. 인덱싱, 압축, 액세스 제어와 같은 고급 로그 관리 기능을 제공한다.

  • 구성
    systemd는 서비스 관리를 단순화하는 단위 파일로 알려진 서비스에 대한 통합 구성 형식을 사용한다.
    systemd에서 서비스를 관리하려면 systemctl 명령을 사용할 수 있다. 몇 가지 일반적인 작업은 다음과 같다.
  1. 서비스 시작: sudo systemctl start service_name
  2. 서비스 중지: sudo systemctl stop service_name
  3. 서비스 재시작: sudo systemctl restart service_name
  4. 부팅 시 서비스 시작 활성화: sudo systemctl enable service_name

Systemd target 선택

systemd target은 원하는 상태에 도달하기 위해 시작해야 하는 systemd 유닛 집합이다. target 파일은 .target 확장자를 가지며 일반적으로 /lib/systemd/system 또는 /etc/systemd/system에 있다. 다음 테이블에는 가장 중요한 target이 나열되어 있다.

 

자주 사용되는 target

  1. graphical.target : 시스템은 멀티 유저, 그래픽 및 텍스트 기반 로그인을 지원
  2. multi-user.target : 시스템이 멀티 유저, 텍스트 기반 로그인만 지원
  3. rescue.target : sulogin 프롬프트, 기본 시스템 초기화
  4. emergency.target sulogin : 프롬프트, initramfs 피벗 완료, /에 읽기 전용으로 마 운트된 시스템 루트에 사용

systemd에서 target은 특정 시스템 상태 또는 실행 수준을 생성하기 위해 다른 장치(서비스, 소켓, 장치 등)를 함께 그룹화하는 장치 구성 파일이다. target은 서로 다른 시스템 상태 간의 시스템 초기화, 종속성 및 전환을 관리하는 데 도움이 된다. 이는 전통적인 System V init 시스템(SysVinit)에서 발견되는 실행 수준의 진화로 간주될 수 있다.


systemd에서 target을 활용하기 위한 systemctl 명령어 활용

1. target 간 전환

예1_ 그래픽 target에서 다중 사용자 target으로 전환(그래픽 인터페이스 비활성화)

sudo systemctl isolate multi-user.target

예2_그래픽 target으로 다시 전환

sudo systemctl isolate graphical.target

2. 기본 target 설정

예_ 기본 target을 multi-user.target으로 설정

sudo systemctl set-default multi-user.target

기본 target을 설정한 후 시스템은 다음 재부팅 시 지정된 target(이 경우 multi-user.target)으로 부팅된다.

3. 맞춤 target 만들기

필요에 따라 특정 서비스 또는 시스템 상태를 그룹화하기 위해 사용자 정의 target을 생성할 수 있다. 사용자 지정 target을 만들려면 다음 단계를 따르십시오.

1_ /etc/systemd/system에서 새 target 파일을 만든다.

sudo nano /etc/systemd/system/my-custom.target

2_ 필요한 구성을 파일에 추가하여 사용자 지정 target을 정의한다. 예를 들어 multi-user.target과 유사하지만 일부 추가 서비스가 있는 사용자 정의 target을 생성하려면 다음 구성을 사용할 수 있다.

[Unit]
Description=My Custom Target
Requires=multi-user.target
After=multi-user.target
Wants=my-additional-service1.service my-additional-service2.service

이 구성에서 사용자 지정 target은 multi-user.target이 필요하고 이후에 시작된다. 또한 사용자 정의 target과 함께 시작되는 my-additional-service1.service 및 my-additional-service2.service 서비스를 원한다는 뜻이다.


4_ 파일을 저장하고 systemd 구성을 다시 로드한다.

sudo systemctl daemon-reload


4. 사용자 지정 target으로 전환

sudo systemctl isolate my-custom.target

 

5. 사용자 정의 target을 시스템이 부팅할 기본 target으로 설정

sudo systemctl set-default my-custom.target

이제 시스템은 다음 재부팅 시 사용자 지정 target으로 부팅된다. 이 사용자 지정 target은 multi-user.target에 필요한 서비스와 함께 구성에 지정된 서비스를 시작한다.

 

6. 현재 지정돼 있는 target 확인

sudo systemctl get-default

실무에서는 server에서 graphical.target 을 거의 사용하지 않는다고 한다. 이 target은 좀 더 가시성을 좋게 만들어주는 것으로 (네트워크를 설정할 때 nmcli가 아닌 nmtui로 보는 느낌) server는 켜져있고 작동만 잘 되면 됨으로 굳이 가시성이 좋을 필요가 없다는 것이다.

반응형