카테고리 없음

Mac OS X에서 요일 지정하여 주기적으로 무언가 실행하기

wafe 2009. 5. 15. 00:09

Mac OS X에서는 유닉스/리눅스 계열에서 흔히 쓰는 cron 대신 launchd라는 것으로 주기적으로 실행되는 명령을 콘트롤한다. launchd에 대한 일반적인 사항은 Mac에서 정해진 시간에 자동으로 프로그램 실행하는 법이라는 포스트를 보면 알 수 있다.

 

소개한 포스트에서 볼 수 있듯이, 직접 plist 파일을 수정하는 것보다는 Lingon이라는 오픈소스 도구를 사용하는 것이 편리하다. 그런데 cron에서는 쉽게 설정할 수 있는 "매주 월, 화, 수요일 오전 7시에 실행"이라는 방식의 스케줄을 launchd와 Lingon을 통해서는 만들어낼 수가 없다. launchd 문서에도 설명이 없어서, 작년에 똑같은 작업을 할 때에는 한참을 찾아 헤매다가 결국 비활성화되어 있는 cron을 활성화시켜서 일정을 지정했다. 이번에 OS를 재설치하고 다시 설정을 해야해서 한 번 찾아봤는데, 이번에는 방법을 발견했다.

 

사실 알고 보니 개념적으로 간단한 건데, 날짜를 배열로 지정해주면 되는 거였다. 매주 월,화 오전 7시 19분이라는 스케줄 설정은 이렇게 하면 된다.

   <key>StartCalendarInterval</key>
   <array>
       <dict>
           <key>Hour</key>
           <integer>7</integer>
           <key>Minute</key>
           <integer>19</integer>
           <key>Weekday</key>
           <integer>1</integer>
       </dict>
       <dict>
           <key>Hour</key>
           <integer>7</integer>
           <key>Minute</key>
           <integer>19</integer>
           <key>Weekday</key>
           <integer>2</integer>
       </dict>
   </array>

 

이것은 Lingon을 통해서는 만들어낼 수 없는 형식이라서, 일단 기본적인 뼈대만 Lingon의 Basic Mode에서 만들고, Expert Mode로 바꿔서 XML을 편집하는 식으로 설정해야 한다. Expert Mode에서 Basic Mode에서는 할 수 없는 설정을 추가한 후 Basic Mode로 다시 돌아가 내용을 바꾸면, Expert Mode에서 설정한 부분은 날아가버리기 때문에 주의해야 한다.

이 글은 스프링노트에서 작성되었습니다.