runit
| 원저자 | 게릿 파페 |
|---|---|
| 발표일 | 2004년 2월 10일[1] |
| 안정화 버전 | 2.2.0
/ 2024년 9월 29일[2] |
| 프로그래밍 언어 | C, Shell |
| 운영 체제 | 리눅스, FreeBSD, OpenBSD, NetBSD, macOS, 솔라리스 |
| 종류 | Init 데몬 |
| 라이선스 | New BSD License |
| 웹사이트 | smarden |
runit은 유닉스 계열 운영체제를 위한 init 및 서비스 관리 체계로, 운영체제 전반에 걸쳐 프로세스를 초기화하고, 관리하고, 종료한다. Runit은 많은 리눅스 기반 운영체제뿐만 아니라 BSD, 솔라리스 운영체제에서도 실행되는 daemontools[3] 프로세스 관리 도구의 재구현이다. Runit은 시스템 서비스 시작을 병렬화하여 운영체제의 부팅 시간을 단축할 수 있는 기능을 제공한다.[4]
init 데몬으로 실행될 때, Runit은 다른 모든 프로세스의 직접 또는 간접적인 조상이다. 부팅 중에 시작되는 첫 번째 프로세스이며, 시스템이 종료될 때까지 계속 실행된다. 종종 다른 init 시스템과 함께 별도의 서비스 관리자로 사용된다. 서비스 관리자 역할에서는 비특권 사용자가 개인 서비스를 조직하거나, 슈퍼유저가 현재 사용 중인 init 시스템이 관리하지 않는 서비스를 관리하는 데 사용할 수 있다.

설계
[편집]Runit은 작고, 모듈화되어 있으며, 이식성 있는 코드베이스에 중점을 둔다. Init 역할에서 Runit은 세 가지 단계로 나뉜다: 일회성 초기화, 프로세스 관리, 그리고 정지 또는 재부팅. 첫 번째 및 세 번째 단계는 실행되는 특정 운영체제에 맞춰야 하지만, 두 번째 단계는 모든 POSIX 호환 운영체제에서 이식 가능하다.[4] 3단계는 각각 1, 2, 3으로 명명된 3개의 실행 파일(일반적으로 셸 스크립트)을 통해 구성할 수 있다.
2단계는 일반적으로 runsvdir이라는 바이너리를 호출하는데, 이는 전역 데몬 관리를 담당하는 프로세스이다. 인수로 전달된 폴더에서 발견되는 모든 데몬에 대해 개별 워치독을 생성하며, 각 워치독은 데몬(및 최종적으로 연결된 로거 서비스)을 시작하고 데몬이 죽으면 다시 시작한다. 데몬이 추가되거나 제거되면 워치독을 죽이거나 새로운 워치독을 시작한다. 특정 이름의 실행 파일은 데몬의 다양한 단계(실행, 확인, 완료 등)를 설명하는 데 사용되며, 존재할 경우 특정 스크립트에 의해 전송되고 실행되는 신호를 가로챌 수 있고, 데몬을 제어하는 인터페이스를 노출하기 위해 명명된 파이프가 생성된다.
사용법
[편집]Runit은 sysvinit의 대체제로 사용될 수 있거나[5] 서비스 관리자(inittab 파일에 지정된 프로세스를 실행하는 부모 PID 1 프로세스로 sysvinit 또는 다른 init 시스템을 사용하는 경우)로 사용될 수 있다.[6] 루비 온 레일즈를 실행할 수 있는 RubyWorks 소프트웨어 스택은 Runit을 스위트에 통합했다.[7]
채택
[편집]Runit은 다음의 기본 init 시스템이다:
- AntiX (데비안 기반, 버전 19부터)
- 드라고라 GNU/리눅스 리브레 (Dragora 2부터)
- 보이드 리눅스[8]
Runit은 다음의 "공식적으로" 사용 가능한 init 시스템이다:
각주
[편집]- ↑ Pape, Gerrit (2004년 2월 10일). “runit-1.0.0 release” (메일링 리스트). 《gmane.comp.sysutils.supervision.general》. 2013년 12월 13일에 원본 문서에서 보존된 문서. 2013년 12월 10일에 확인함.
- ↑ Pape, Gerrit (2024년 9월 29일). “runit-2.2.0 available”. 《www.mail-archive.com》. 2024년 10월 3일에 확인함.
- ↑ Purcell, Steve (2007년 11월 11일). “Init Scripts Considered Harmful”. 《sanityinc.com》. 2013년 12월 12일에 확인함.
- ↑ 가 나 Pape, Gerrit. “runit - benefits”. 2013년 4월 23일에 확인함.
- ↑ Pape, Gerrit. “replacing init”. 2014년 8월 11일에 확인함.
- ↑ Pape, Gerrit. “use with traditional init”. 2014년 8월 11일에 확인함.
- ↑ “Process management with runit”. 《rubyworks.rubyforge.org》. 2017년 2월 23일에 원본 문서에서 보존된 문서. 2014년 4월 14일에 확인함.
- ↑ “VoidLinux”. 2020년 6월 28일에 확인함.
- ↑ “Gentoo”. 2024년 4월 28일에 확인함.
- ↑ “Services and Daemons - runit - Void Linux Handbook”. 《docs.voidlinux.org》. 2025년 6월 1일에 확인함.