February 6, 2014 · faq linux upstart RHEL6 Ubuntu

[FAQ] Upstart 사용에 대해서

Upstart

기존 Unix "System V"에 있던 init 시스템을 대체하기 위한 프로그램 입니다. init을 대체할 뿐만 아니라 다양한 기능을 제공 합니다 또한, upstart는 이벤트 기반으로 동작하기 때문에 설정 내용에 따라서 init 뿐만 아니라 cron, atd, anacron을 대체 할 수도 있으며 inetd와 유사하게 설정도 가능합니다.

예제로 알아보는 job 설정

예제 : tty1 설정 파일

# tty1 - getty
#
# This service maintains a getty on tty1 from the point the system is
# started until it is shut down again.

start on stopped rc RUNLEVEL=[2345] and (
            not-container or
            container CONTAINER=lxc or
            container CONTAINER=lxc-libvirt)

stop on runlevel [!2345]

respawn
exec /sbin/getty -8 38400 tty1

JOB 파일의 문법은 직관적 형태를 띄고 있습니다.

start on / stop on

먼저 start on, stop on에 대해서 살펴보면 뒤에 지시되는 이벤트에 대해서 각각 시작, 정지를 하도록 지정하는 내용입니다. upstart는 관리자가 직접 시작/종료 처리를 해 줄 수도 있지만 JOB 파일에 지정한 이벤트에 따라서 자동으로 시작/종료가 가능합니다. start on/stop on 뒤에는 보통 아래와 같은 이벤트 지시지가 따라 붙습니다

start on startup
start on runlevel [23]
start on stopped rcS
start on started tty1

respawn

이 지시자가 있으면 해당 프로세스가 죽었을 경우 (또는 crash 되었을 경우) 자동으로 프로세스를 다시 실행시켜 줍니다.

exec

실제 서비스가 시작될 때 실행하는 내용을 담고 있습니다. 위 예제에서는 /sbin/getty를 실행하도록 되어있습니다.

이 외에도 많은 설정 방법이 존재하는데 Upstart Cookbook을 참고하시면 됩니다.

Upstart 명령

Upstart 명령은 아래와 같습니다. init system을 대체하기 때문에 init과 동일한 이름의 명령도 존재 합니다.

서비스 제어 (service 명령으로도 바꿔서 사용할 수 있습니다)

$ initctl console stop
  : initctl을 통해서 console JOB을 종료한다
$ stop console
  : console JOB을 종료한다
$ start serial
  : serial JOB을 실행한다

리부팅 / 시스템 종료

그 외의 명령 (직접 실행 할 일은 없음)

그 외

예시) initctl serial stop 을 실행했을 경우
$ initctl serial stop
stop: Unknown parameter: DEV

수동으로 실행 할 경우에는 DEV 변수 값이 필요하기 때문에 아래와 같이 실행합니다.
$ initctl serial stop DEV=ttyS0

References

  • LinkedIn
  • Tumblr
  • Reddit
  • Google+
  • Pinterest
  • Pocket