포럼 내용이 있는 곳으로 건너뜀

사과나무 이야기 마당

Mac 사용자 정보 교류 마당 - AppleTree forums for Korean Mac users

로그인하지 않으셨습니다. 로그인 또는 가입해 주세요.

이곳은 Mac 관련 유용한 정보들을 모아 많은 분과 함께 공유하기 위해 운영되고 있습니다. 잠깐 들르시는 나그네라도 자유롭게 글을 올리시고 의견을 나누실 수 있습니다.

새 댓글 작성

새 댓글 작성

새 댓글을 작성합니다.

사용 가능: BBCode 이미지 그림 문자

양식을 전송하기 전에 (필수)라고 표시된 모든 항목을 입력해야만 합니다.

손님인 경우 필수로 요구되는 정보


필수 정보
글 설정 선택사항

글타래 내용 (최신 글 먼저)

2

위에서 설명된 시동 항목을 만드는 과정을 손쉽게 도와주는 도구로 Armadillo가 새로 나왔습니다.
시동 항목을 위한 shell 스크립트 편집기가 내장되어 있으며, 또한 스크립트의 문법 검사까지 가능해서 필요할 때는 무척 간편할 것 같습니다. smile

1

시동 항목이란 첫 로그인 과정이 진행되기 전에, 오래된 파일들을 지우거나 혹은 기타 유지보수 작업들을 행하는 등의 기초 서비스를 제공하는 프로그램이나 shell 스크립트들을 말합니다.
주의: daemon을 시동하기 위해 시동 항목으로 등록해 두는 것은 삼가해야 합니다. daemon을 시동하기 위해서는, “Bootstrap Daemons”에 설명되어 있는 것처럼 boostrap 환경에 daemon을 등록하셔야 합니다.

시동 항목이란

시동 항목은 SystemStarter 프로그램을 통해, 시동 단계의 마지막 과정으로 실행됩니다. 이 때는, SystemStarter가 /System/Library/StartupItems 그리고  /Library/StartupItems 디렉토리에 있는 시동 항목들을 찾게 됩니다. 그리고, 각 시동 항목들의 property list에 저장되어 있는 정보들을 모아서, 이 정보를 가지고 항목들의 실행 순서를 결정합니다. 그리고 나서, 다른 항목들 간의 내부 종속 관계에 따라 묶음 단위로 시동 항목들을 실행시킵니다.

/System/Library/StartupItems 디렉토리는 Mac OS X에 기본적으로 설치되어 있는 시동 항목들만을 위해 사용되고, 기타 다른 시동 항목들은 /Library/StartupItems 디렉토리에 저장되어야 합니다. 한 가지 주의하실 할 것은, 이 디렉토리는 처음에는 존재하지 않고, 시동 항목을 설치할 때 새로 만들어야 합니다.

새로운 시동 항목을 만들기 위해서는, 코드를 실행시킬 프로그램이나 스크립트를 만들고, 시동 항목에 관한 정보를 가지고 있게 될 property list 파일을 만들어야 합니다. 시동 항목을 만드는 과정은 다음과 같습니다.

시동 항목의 실행자 만들기

시동 항목의 실행자에는 시동 항목의 코드가 포함되어 있으며, command-line 실행자 혹은 shell 스크립트의 형태로 실행될 수 있습니다. 보통, 이 실행자는 시스템이 시동할 때에만 불려지게 됩니다. 하지만, SystemStarter는 그 후에도 실행자를 부를 수 있는 기능도 제공합니다. (참고: “Managing Startup Items”)

시동 항목을 만드는 과정은:

1. 시동 항목을 위한 디렉토리를 만듭니다. 디렉토리 이름은 시동 항목이 제공할 기능과 어울리게 지어주어야 합니다.
예: MyDBServer

2. 실행자를 디렉토리에 추가합니다. 실행자의 이름은 실행자를 포함하고 있는 디렉토리의 이름과 같아야 합니다.
예: MyDBServer/MyDBServer

3. StartupParameters.plist로 이름 지어진 property list를 만들고 해당 디렉토리에 추가합니다. 아래의 “시동 항목 속성 지정하기” 참고.
예: MyDBServer/StartupParameters.plist

만약 시동 항목 실행자가 shell 스크립트의 형태로 실행된다면, Mac OS X에는 스크립트 만드는 과정을 손쉽게 도와주는 몇 가지 코드를 제공하고 있습니다. /etc/rc.common 파일이 command-line 설정 변수들의 작업 과정들을 정의하고 시스템 설정 사항들을 모으는 기능을 합니다. 그래서, shell 스크립트의 처음에, rc.common 소스 파일을 추가하고 RunService 과정을 부르는 command-line 설정을, 아래의 예처럼 추가하십시오:

#!/bin/sh
 . /etc/rc.common

 StartService()
 {
 your start code
 }

 StopService()
 {
 your stop code
 }

 RestartService()
 {
 your restart code
 }

 RunService "$1"

이곳의 RunService 과정은 shell 스크립트 안의 StartService, StopService, 그리고 RestartService 과정들을 찾아서, 필요에 따라 서비스를 실행, 정지, 혹은 재시동 할 때 불러옵니다.

만약 시동 항목 실행자가 완료하는 데 오랜 시간이 걸리는 코드를 포함하고 있다면, 코드를 daemon이나 혹은 뒤에서 안보이는 작업으로 실행되도록 하는 것이 바람직 할 겁니다.
스크립트로 직접 오래 걸리는 시동 작업들을 실행시키는 것은 시스템 시동 시간을 늘리고 지체되게 하는 부작용이 있습니다. 그래서, 시동 항목 스크립트는 최대한 빨리 실행되고나서 작업을 마치도록 하는 것이 좋습니다.

시동 항목 속성 지정하기

시동 항목 실행자와 더불어, 모든 각각의 시동 항목들은 시동 항목 디렉토리 안에 StartupParameters.plist 이름의 property list 파일을 가지고 있어야 합니다.
아래의 표에서는 시동 항목의 StartupParameters.plist 파일에 포함되어야 하는 key-value 쌍들을 보여줍니다. 모든 array들과 dictonary들은 string 값을 가집니다. 이 property list를 만들기 위해서는, /Developer/Applications 폴더에 있는 Property List Editor 어플이케이션을 사용하시는 것도 좋습니다.

StartupParameters.plist key-value 쌍들
- Description(String) : 시동 항목에 대한 짧은 설명. 시스템 관리 도구들에 의해서 사용됨.
- Provides(Array)Array : 시동 항목에 의해 제공되는 서비스들. 비록, 시동 항목은 기능적으로 여러개의 서비스들을 제공할 수도 있겠지만, 가능한 한 하나만으로 제한하는 것이 좋습니다.
- Requires(Array) : 시동 항목이 실행되기 전에 먼저 실행되어야 하는 다른 시동 항목들에 의해서 제공되는 서비스들. 만약 필요한 서비스들이 사용될 수 없는 상태라면, 이 시동 항목은 실행되지 않습니다.
- Uses(Array) : 시동 항목이 실행되기 전에 먼저 실행되어야 하는 다른 시동 항목들에 의해서 제공되는 서비스들. 하지만, 필수 요건은 아님. 필요한 서비스들이 사용될 수 없는 상태라도 실행은 가능합니다.
- OrderPreference(String) : Requires 그리고 Uses 값에 의해 결정되는 같은 실행 순서를 가지고 있는 시동 항목들과 그것들의 상대적 실행 순서에 관한 정보. 순서 설정 값에는 다섯 가지가 있습니다: First, Early, None, Late, 그리고 Last. 기본 값은 None. 순서 선호도 값은 참고적인 성격을 가지며 무시될 수도 있습니다.

여기서, Requires와 Uses 속성에 지정한 값은 시동 항목이 의존하게 되는 서비스 이름에 해당합니다. 서비스 이름은 해당 서비스를 제공하는 시동 항목의 이름과 같지 않을 수도 있습니다. Provides 속성이 시동 항목에 의해 제공되는 서비스의 이름을 지정해 주며, 보통 이것의 이름이 시동 항목의 이름과 같겠지만, 꼭 그럴 필요는 없습니다. 예를 들어, 시동 항목이 여러 서비스들을 실행시키는 특별한 경우에는, 시동 항목의 이름과 같은 이름을 가진 최대 하나의 서비스를 가질 수 있게 됩니다.

만약, 두 개의 시동 항목이 같은 이름의 서비스를 제공한다면, SystemStarter는 그 이름을 가지고 있는 첫 번째의 시동 항목만을 실행시킵니다. 이러한 이유로, 시동 코드 안에서 절대적인 코드 의존 때문에 필요한 경우가 아니라면, 시동 항목들이 여러 개의 서비스들을 제공하는 것을 권하지는 않습니다.

위에서 사용된 Requires, Uses, 그리고 OrderPreference key들의 값은 특정한 실행 순서를 보장해 주지는 않습니다.

따옴 - Apple 문서 - Creating a Startup Item

더 자세한 시스템 시동 과정은 Apple의 시스템 시동에 관한 소개 문서를 참고하시기 바랍니다.



Mac으로 운영됩니다