정의
runit은 Unix 계열 운영체제에서 사용되는 초기화(init) 시스템 및 서비스 감독자(supervisor)이다. 시스템 부팅 시 초기 프로세스를 실행하고, 시스템이 가동 중일 때는 서비스의 시작·중지·재시작 등을 관리한다.
개요
runit은 독일의 개발자 Gerrit Pape가 2000년대 초에 개발했으며, 기존 SysV init의 단순함과 신뢰성을 유지하면서도 더 빠른 부팅과 서비스 관리 기능을 제공하도록 설계되었다. Linux, BSD, macOS 등 다양한 Unix‑like 시스템에 이식 가능하며, 독립적인 패키지로 배포된다. 시스템 초기화는 세 단계(boot, run, halt)로 구성되며, 각 단계마다 전용 스크립트가 실행된다. 서비스는 각각 별도의 ‘sv’ 디렉터리 아래에 정의되며, sv 명령어를 통해 제어한다.
어원/유래
‘runit’이라는 명칭은 영어 구문 “run it”(‘그것을 실행한다’)에서 파생된 것으로 추정된다. 공식 문서에서는 이름의 의도가 “간단히 실행(run)할 수 있는(init) 시스템”을 강조하기 위함이라고 밝히고 있다. 정확한 명명 의도에 대한 추가적인 공식 설명은 확인되지 않는다.
특징
| 구분 | 내용 |
|---|---|
| 구조 | 1) boot 단계 – 커널이 초기화 스크립트를 실행하여 runit을 시작함.2) run 단계 – 다중 서비스 감독자( runsvdir)가 실행되어 각 서비스 디렉터리를 감시.3) halt 단계 – 시스템 종료 시 서비스 정리와 종료 스크립트 실행. |
| 빠른 부팅 | 최소한의 초기화 작업과 병렬 서비스 시작을 통해 전통적인 SysV init에 비해 부팅 시간을 크게 단축한다. |
| 서비스 관리 | 서비스는 표준화된 디렉터리 구조(sv/, log/)와 실행 파일만으로 정의되며, sv start, sv stop, sv restart, sv status 명령어로 제어한다. |
| 신뢰성 | 각 서비스는 독립적인 프로세스로 실행되며, 비정상 종료 시 자동 재시작(감시) 기능을 제공한다. |
| 경량성 | 바이너리 크기가 작고 의존성이 최소화되어 임베디드 시스템이나 컨테이너 환경에서도 활용된다. |
| 이식성 | POSIX 호환 쉘 스크립트와 C 언어로 구현되어 다양한 Unix‑like 플랫폼에 포팅 가능하다. |
| 대체 가능성 | systemd, OpenRC, s6 등과 같은 다른 init 시스템과 비교하여 단순함과 최소한의 기능을 중시한다. |
관련 항목
- systemd – 현대 Linux 배포판에서 널리 사용되는 종합 init 시스템.
- OpenRC – Gentoo 등에서 사용되는 스크립트 기반 init 시스템.
- s6 – 또 다른 경량 서비스 감독자이자 init 시스템.
- SysV init – 전통적인 Unix 초기화 방식, runit이 대체 대상으로 삼음.
- 서비스 감독자(supervisor) – 프로세스 감시와 자동 재시작을 담당하는 소프트웨어 전반.
※ 본 내용은 공개된 공식 문서 및 신뢰할 수 있는 기술 자료를 기반으로 작성되었으며, ‘runit’이라는 명칭의 정확한 어원에 대한 상세한 설명은 제한된 자료로 인해 확인되지 않는다.