누구든지 cron 스타일의 시작된 작업을 작성하기위한 좋은 튜토리얼을 추천 할 수 있습니까?


18

나는 매시간마다 달리고 싶은 상당히 간단한 직업을 가지고 있습니다. 나는 그것을 사용하여 그것을 할 수는 cron있지만 launchd, 나는 그것에 대해 좋은 것들을 듣기 때문에 이것을 사용하여 배울 것이라고 생각 했다. 나는 man launchd.plist페이지를 참조로 가지고 있지만 예제 작업을 만드는 데 더 많은 것을 찾고 있습니다.


이것은 Stackoverflow로 이동해야합니다.
Philip Regan

5
@Philip Regan 나는 그것에 대해 생각했지만 실제로는 많은 프로그래밍이 필요하지 않습니다. 내가 요구하고 더라면 cron질문을, superuser.com은 바로 이곳되지 않을 것? launchdApple의 버전 cron(및 daemontools아마도 다른 것) 이기 때문에 이것이 최선의 선택이라고 생각했습니다.
Hank Gay

또한 자동화 스크립트에 넣고 iCal에서 실행할 수 있습니다. 실행중인 경우
Mark

3 년이 지난 지금, 나는 cron / launchd 프로세스를 직접 구현해야하고 완전히 다른 관점에서이 질문을 다시 보는 것을 발견했다. 스택 오버플로는 시작된 질문으로 수행 할 작업에 대한 의견이 혼합되어 있지만 실제로는이 질문을 좋아하지 않습니다. 모든 상황이 재미 있다고 생각했습니다. +1
Philip Regan

답변:


13

launchd데몬 ( /Library/LaunchDaemons또는 /System/Library/LaunchDaemons)을 루트로 실행하고 사용자의 로그인 여부에 관계없이 실행합니다. 사용자가 해당 사용자로 로그인하면 시작 에이전트 ( /Library/LaunchAgents/또는 ~/Library/LaunchAgents/)가 실행됩니다. setuid를 사용하여 데몬에서 스크립트를 실행하는 사용자를 변경할 수 없습니다. 이 /System디렉토리는 Mac OS X 작업용으로 예약되어 있으므로 launchdplist를 /Library해당 ~/Library폴더 나 폴더에 넣는 것이 좋습니다 .

첫 번째 단계는 에이전트 또는 데몬을 만드는지 확인하는 것입니다.

두 번째 단계는 .plist파일 을 만드는 것 입니다. Lingon 과 같은 GUI 기반 프로그램을 사용하여이 작업을 수행하거나 자주 사용하는 텍스트 편집기를 사용할 수 있습니다.

.plist매시간마다 스크립트를 실행하기위한 샘플 ( StartInterval또는 StartIntervalCalendar원하는 키 또는 특정 시간 및 / 또는 날짜에 대해 초 StartInterval마다 항목이 발생하는 키 입니다. StartCalendarInterval으로 만든 예제 는 수퍼 유저의 126907 참조 ) :xStartIntervalCalendar

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>local.IDENTIFIER_HERE.SOMETHING</string>
    <key>OnDemand</key>
    <true/>
    <key>RunAtLoad</key>
    <false/>
    <key>UserName</key>
    <string>USERNAME HERE</string>
    <key>Program</key>
    <string>/PATH/TO/SCRIPT</string>
    <key>ProgramArguments</key>
    <array>
        <string>Argument_1</string>
        <string>Argument_2</string>
    </array>
    <key>StartInterval</key>
    <integer>3600</integer>
</dict>
</plist>

.plist필요에 따라 스크립트와 인수 (필수는 별도의 행에 있음)를 가리 키도록 수정하고 레이블 값과 이름은 같지만 .plist끝에 파일을 저장하십시오 . (예 : local.my-mac.flickrstats로 저장 됨 local.my-mac.flickrstats.plist). 아직 데몬을 만들거나 (항상 실행 ) 또는 ( 로그인 한 경우 만) 또는 (모든 사용자가 로그인 한 경우) 해당 .plist파일을 옮기십시오 ./Library/LaunchDaemons~/Library/LaunchAgents/Library/LaunchAgents

launchctl파일을로드하기 위해 필요에 따라 실행하려는 작업을 시작 합니다. 에있는 항목의 /Library경우 sudo를 사용해야합니다. 예를 들어,sudo launchctl load -w /PATH/TO/PLIST

: 참고 또한 슈퍼 사용자에 대한 다음과 같은 질문에 체크 아웃 루트로 launchd에 명령을 , 시스템 전체 데몬을로드 하고, 어떻게 스크립트를 매일 실행 얻을 수 있습니다


4

나는 그것이 좋은 튜토리얼 이 아니라는 것을 알고 있지만 Apple 의 데몬 및 서비스 프로그래밍 안내서 를 살펴볼 수 있습니다 .

전체 자습서가 아니라는 것을 알고 있지만의 기본 사항을 이해할 수 있습니다 launchd.

또한 crond작업 의 예를 제공합니다 .

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
"http://www.apple.
com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>  
    <key>Label</key>
    <string>com.apple.periodic-daily</string>
    <key>ProgramArguments</key>
    <array> 
        <string>/usr/sbin/periodic</string>
        <string>daily</string>
    </array>
    <key>LowPriorityIO</key>
    <true/>
    <key>Nice</key>
    <integer>1</integer>
    <key>StartCalendarInterval</key>
    <dict>  
        <key>Hour</key>
        <integer>3</integer>
        <key>Minute</key>
        <integer>15</integer>
    </dict>
</dict>
</plist>

리소스가 내가 요청한 것이 아니라는 것을 인정하고 비트 RTFM으로 저를 강타했지만 다시 생각하고 내 공감대를 철회하고 싶습니다. 불행히도 질문을 편집하지 않으면 (너무 길다) 아직 편집 할 담당자가 충분하지 않습니다. 뭔가를 조정할 수 있습니까? 감사.
행크 게이

@Hank Gay : 댓글 주셔서 감사합니다. 내 답변도 편집했습니다.
Studer


2

나는 당신이 튜토리얼을 찾고 있다는 것을 알고 있지만, 오프-오프 기회에 누군가가 그들이 발사 된 항목을 만들거나 편집하는 데 도움이되는 도구를 찾는 데 여기에옵니다. Lingon (sourceforge)

더 이상 적극적으로 개발되지 않고 있지만 무엇이 작동합니까 (그리고 분명히 소스 등 포함). Snow Leopard에서 Amazon 클라우드 등에 대한 백업을 예약하는 데 사용했습니다.


Lingon은 이제 App Store에 있으므로 무료로 아직 활성화되지 않았습니다. < peterborgapps.com/lingon >
Mark

애플 정책 요구 사항으로 인해 앱 스토어 버전이 무너졌습니다. SourceForge 사전 컴파일 버전은 잘 작동합니다. 저장시 모달 대화 상자가 표시되지만 데몬을 해제하기 위해 로그 아웃하거나 다시 시작하라는 메시지가 표시됩니다. 강제 종료가 아닌 메뉴에서 프로그램을 종료하고 파일을 올바르게 저장했는지 확인해야했습니다. 해당 파일 및 디렉토리 트리거에 불구가 지원되지 않으며 AppStore 버전에서 루트로 실행되는 것을 작성할 수도 없습니다.
marfarma
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.