2010-11-26 8 views
4
프로그램을 예약 할 수 코코아 (맥 OS X)에서 가장 좋은 방법은 실행하기가 무엇

:코코아로 예약 된 작업?

  • 사용자가 로그인 할 때, 예를 들어 하루 중 특정 시간 (에서
  • :. 12 : 00 정오). 특정 시간 간격 (예 : 매 2 시간마다)으로
  • 입니다.

예약 외에도 프로그램을 예약 해제하고 사용자가 응용 프로그램을 삭제하면 오류가 발생하지 않아야합니다.

기본적으로 프로그램은 동일한 .app 번들 내에있는 주 응용 프로그램 파일 옆에 배치 된 위성 명령 행 실행 파일입니다. 이 프로그램의 목적은 사용자의 홈 디렉토리 (~/Library/Application Support/MyApp)에서 백그라운드 데이터 업데이트를 수행하는 것입니다.

crontab이 좋은 후보입니까? man 페이지의 crontab에 따르면이 기능은 launchctl에 흡수되었다고하지만 유틸리티를 실행하는 데 특정 시간을 예약하는 방법을 찾지 못하는 것 같습니다.

감사합니다.

+0

이것은 수퍼 유저에게 속합니다. – jer

답변

5

launchd이 적절한 방법입니다 (crontab은 Mac에서 사용되지 않으며 launchd을 선호 함). 당신은 당신의 프로그램 (실행 파일 이름, 인수 등)에 대한 정보와 PLIST 파일을 만들 것, 그리고 그것의 일부는 (브라우저 및 검증되지 않은에서 입력 경고) 될 것이다 :

<key>StartCalendarInterval</key> 
<dictionary> 
    <key>Hour</key> 
    <integer>12</integer> 
</dictionary> 

<key>StartInterval</key> 
<integer>7200</integer> 

<key>LimitLoadToSessionType</key> 
<string>Aqua</string> 
<key>RunAtLoad</key> 
<true/> 
  • StartCalendarInterval해야 12 시간 (정오)의 상단에 프로그램을 실행하십시오.
  • StartInterval는 매 2 시간 (= 7,200초) 아쿠아 세션이 시작되면
  • LimitLoadToSessionType는 프로그램을로드 프로그램을 실행해야합니다 (사용자가 실제로 윈도우 서버 (사용자 그래서 만약이 로딩을 방지 할 수에 로그인 에서 ssh 년대)
  • RunAtLoad는 PLIST이로드 될 때.이의 LimitLoadToSessionType과 결합, 실행 파일을 시작해야 실행하는 실행 지시 사용자가 로그인 할 때.

그것은 가능 StartIntervalStartCalendarInterval 그 m 배타적이다. 그런 경우에는, 당신은 StartInterval 키를 꺼내에 StartCalendarInterval 물건을 변경할 수 있습니다 자세한 내용은

<key>StartCalendarInterval</key> 
<array> 
    <dictionary> 
    <key>Hour</key> 
    <integer>0</integer> 
    </dictionary> 
    <dictionary> 
    <key>Hour</key> 
    <integer>2</integer> 
    </dictionary> 
    <dictionary> 
    <key>Hour</key> 
    <integer>4</integer> 
    </dictionary> 
    <dictionary> 
    <key>Hour</key> 
    <integer>6</integer> 
    </dictionary> 
    ... 
    <dictionary> 
    <key>Hour</key> 
    <integer>12</integer> 
    </dictionary> 
    ... 
    <dictionary> 
    <key>Hour</key> 
    <integer>22</integer> 
    </dictionary> 
</array> 

, man launchd.plist를 참조하십시오.

+0

이 솔루션은 좋은 선택이며 대부분의 경우 가장 좋습니다.그러나 샌드 박스 모드에서 동적으로 구성 가능한 작업을 만들어야 할 때는 불가능합니다. – mthama

+0

시스템 날짜 변경시 응용 프로그램이 plist 시간과 일치하지 않아도 자동으로 실행됩니다 –

0

Mac OS X에서는 "crontab -e"를 터미널에서 실행하여 crontab 편집기 (기본적으로 Vi)를 시작할 수 있습니다. 편집기를 종료하면 작업이 예약됩니다.

2

launchd 구성 파일을 편집하는 데 도움이되는 Lingon이라는 멋진 GUI 응용 프로그램이 있습니다. 여기에서 다운로드 할 수 있습니다. Lingon

+0

+1 멋진 응용 프로그램! –