Linux 시스템 관리에서 중요한 두 가지 개념인 init의 런레벨과 systemd의 유닛파일에 대해 알아보겠습니다. 이 글에서는 두 시스템의 개념, 정의, 사용 방법, 구성 요소 및 차이점을 정리해 보겠습니다.
개념과 정의
런레벨: 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/ 디렉토리에 위치하며, 각 런레벨에서 실행할 스크립트와 순서를 정의합니다.
개념과 정의
유닛파일: 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]: 유닛의 설명 및 동작 전후에 실행할 유닛을 정의합니다.
[Service]: 서비스 유닛의 동작 방식을 정의합니다.
[Install]: 유닛 설치 정보를 정의하며, 유닛을 특정 타겟에 연결합니다.
실제 사용 예시
/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
관계
init과 systemd는 모두 시스템 및 서비스 관리를 위한 도구입니다. systemd는 init의 대체물로 개발되었으며, 더 많은 기능과 유연성을 제공합니다.
차이점