Upstart 는 Canonical 에서 개발했기 때문에 한동안 Ubuntu 의 init 구현이었지만, 최신 Ubuntu 설치에서는 현재 systemd 가 사용됩니다. Upstart 는 엄격한 시작 프로세스, 작업 차단 등 SysV 의 문제점을 개선하기 위해 만들어졌습니다. Upstart 의 이벤트 및 작업 기반 모델을 통해 이벤트가 발생하는 즉시 응답할 수 있습니다.
Upstart 를 사용하고 있는지 확인하려면 /usr/share/upstart 디렉터리가 있는지 확인하는 것이 좋은 지표입니다.
Job 은 Upstart 가 수행하는 작업이며, Event 는 Job 을 트리거하기 위해 다른 프로세스로부터 수신되는 메시지입니다. Job 목록과 해당 구성을 보려면 다음을 확인하십시오.
pete@icebox:~$ ls /etc/init
acpid.conf mountnfs.sh.conf
alsa-restore.conf mtab.sh.conf
alsa-state.conf networking.conf
alsa-store.conf network-interface.conf
anacron.conf network-interface-container.conf
이러한 Job 구성 내부에서 Job 을 시작하는 방법과 시기에 대한 정보를 찾을 수 있습니다.
예를 들어, networking.conf 파일에는 다음과 같이 간단하게 작성될 수 있습니다.
start on runlevel [235]
stop on runlevel [0]
이는 runlevel 2, 3 또는 5 에서 네트워킹 설정을 시작하고 runlevel 0 에서 네트워킹을 중지함을 의미합니다. 구성 파일을 작성하는 방법에는 여러 가지가 있으며, 사용 가능한 다양한 Job 구성을 살펴보면 이를 알 수 있습니다.
Upstart 가 작동하는 방식은 다음과 같습니다.
- 먼저
/etc/init에서 Job 구성을 로드합니다. - 시작 이벤트가 발생하면 해당 이벤트로 트리거된 Job 을 실행합니다.
- 이러한 Job 은 새로운 이벤트를 생성하고, 그러면 해당 이벤트가 더 많은 Job 을 트리거합니다.
- Upstart 는 필요한 모든 Job 을 완료할 때까지 이 작업을 계속합니다.