init 프로세스 vs systemd 프로세스

메론보이·2024년 5월 25일

리눅스

목록 보기
7/17
post-thumbnail

Linux 시스템 관리: init의 런레벨과 systemd의 유닛파일

Linux 시스템 관리에서 중요한 두 가지 개념인 init의 런레벨과 systemd의 유닛파일에 대해 알아보겠습니다. 이 글에서는 두 시스템의 개념, 정의, 사용 방법, 구성 요소 및 차이점을 정리해 보겠습니다.

1. init의 런레벨

개념과 정의
런레벨: Unix 계열 운영체제에서 시스템의 상태를 정의하는 사전 설정된 운영 모드입니다. 각 런레벨은 시스템이 부팅, 종료, 또는 특정 상태로 전환될 때 수행해야 할 작업을 정의합니다.

주요 런레벨
0: 시스템 종료 (halt)
1: 싱글 유저 모드 (single-user mode)
2: 멀티 유저 모드 (네트워크 없이)
3: 멀티 유저 모드 (네트워크 포함)
4: 예약된 런레벨 (사용되지 않음)
5: 멀티 유저 모드 (네트워크 포함 + GUI)
6: 시스템 재부팅 (reboot)

사용 예시

시스템을 싱글 유저 모드로 전환: init 1
시스템 재부팅: init 6

구성 요소
/etc/inittab: 시스템의 기본 런레벨을 설정하고, 각 런레벨에서 실행할 작업을 정의합니다.
런레벨 스크립트: /etc/rc.d/rc*.d/ 디렉토리에 위치하며, 각 런레벨에서 실행할 스크립트와 순서를 정의합니다.

2. systemd의 유닛파일

개념과 정의
유닛파일: systemd에서 서비스 및 기타 시스템 리소스를 관리하기 위한 구성 파일입니다. 유닛파일은 서비스, 소켓, 장치, 마운트 포인트 등 다양한 유형을 포함합니다.

주요 유닛 유형
서비스 유닛 (.service): 시스템 서비스 관리
타이머 유닛 (.timer): 스케줄된 작업 관리
마운트 유닛 (.mount): 파일 시스템 마운트 관리
소켓 유닛 (.socket): 소켓 활성화 기반 서비스 관리

사용 예시

sudo systemctl start my_service.service  # 서비스 시작
sudo systemctl stop my_service.service  # 서비스 중지
sudo systemctl enable my_service.service  # 부팅 시 자동 시작
sudo systemctl disable my_service.service  # 부팅 시 자동 시작 해제
sudo systemctl status my_service.service  # 서비스 상태 확인

구성 요소
[Unit]: 유닛의 설명 및 동작 전후에 실행할 유닛을 정의합니다.

  • Description: 유닛에 대한 설명.
  • After: 특정 유닛이 시작된 후에 실행됨을 의미.

[Service]: 서비스 유닛의 동작 방식을 정의합니다.

  • ExecStart: 서비스 시작 시 실행할 명령.
  • ExecStop: 서비스 중지 시 실행할 명령.
  • Restart: 서비스 실패 시 재시작 정책.

[Install]: 유닛 설치 정보를 정의하며, 유닛을 특정 타겟에 연결합니다.

  • WantedBy: 유닛이 활성화될 타겟을 정의.

실제 사용 예시

/etc/systemd/system/my_service.service 파일:

[Unit]
Description=My Custom Service
After=network.target

[Service]
ExecStart=/usr/bin/my_service
Restart=always

[Install]
WantedBy=multi-user.target

3. init과 systemd의 관계 및차이점

관계
init과 systemd는 모두 시스템 및 서비스 관리를 위한 도구입니다. systemd는 init의 대체물로 개발되었으며, 더 많은 기능과 유연성을 제공합니다.

차이점

  • 구성 파일: init은 /etc/inittab 파일을 사용하고, systemd는 다양한 유형의 유닛 파일을 사용합니다.
  • 런레벨: 전통적인 init 시스템에서 시스템 상태를 정의하는 방식으로, 숫자로 상태를 구분합니다.
  • 유닛 파일: systemd에서 시스템 리소스 및 서비스를 관리하는 방식으로, 유닛 파일을 통해 더 세분화된 설정과 관리가 가능합니다.
  • 병렬 처리: init은 순차적으로 작업을 처리하지만, systemd는 병렬로 작업을 처리하여 부팅 시간을 단축시킵니다.

0개의 댓글