Mac OS X에서 매일 스크립트를 실행하려면 어떻게해야합니까?


답변:


62

참고로 세 가지 옵션이 모두 작동합니다. 그러나 iCal 옵션은 다른 옵션보다 더 많은 제한이 있습니다.

(크론 편집을위한 GUI가 있으며 다른 답변에서 언급 한 것처럼 시작됩니다)

Cron은 가장 간단하고 잘 알려져 있으며 사용 가능한 많은 자습서가 있습니다. Coles Notes는 명령 줄에서 편집 /etc/crontab하거나 사용하여 아래에서 마지막 줄을 crontab에 추가하는 것입니다 crontab.

MM HH DD MM WKD -- Minutes, Hour, Day, Month, Weekday (eg. Sun, Mon)
MM HH * * * USERNAME /PATH/TO/SCRIPT
00 3 * * * chealion /myscript.sh "Runs at 03:00 every day"

Mac OS X에서는 cron실제로 대체 launchd되었지만 launchd이전 버전과 호환되므로 cron여전히 사용할 수 cron있지만 실제로 launchd모든 작업을 수행하고 있습니다.

사용 launchd하려면 수퍼 유저의 다른 질문들도 확인하고 싶을 것입니다 : 구성 파일 (plist 파일)을 저장할 위치에 대한 (예 : 루트로 실행 된 명령을 어떻게 실행합니까? ) 그것이 실행될 때 cron과 유사하게 그것이 저장된 디렉토리와로드 방법에 달려 있습니다 (예 : sudo 사용 여부).

매일 실행 된 plist 샘플 실행 (파일과 레이블이 동일한 지 확인하십시오 (레이블의 plist 빼기)) –이 스크립트는 매일 자정 3 분에 실행됩니다.

<?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>KeepAlive</key>
    <false/>
    <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>StartCalendarInterval</key>
    <dict>
        <key>Hour</key>
        <integer>00</integer>
        <key>Minute</key>
        <integer>03</integer>
    </dict>
</dict>
</plist>

컴퓨터가 잠들거나 꺼질 때 예약 된 경우 시작된 작업은 컴퓨터를 다시 사용할 수있게되면 (켜거나 깨우는 경우) 실행되지만 며칠이 있더라도 한 번만 실행됩니다. 되었습니다. 편집 : 방금 컴퓨터가 꺼져 있으면 해당 시간 동안 (이벤트 시작시 스크립트가 시작되지 않음) (자기 시작시 스크립트가 시작되지 않음) 시작 이벤트가 손실된다는 Apple 문서를 보았습니다.


또 다른 옵션은 " at " 를 사용하는 것 입니다 ( "man at"으로 매뉴얼 페이지 확인). 스크립트는 다음과 같이 스스로 일정을 조정할 수 있습니다.

echo "sh $0 $@" | at `date +%H:%M` tomorrow

( "내일"대신 "+ 10 분"을 사용하여 10 분마다 실행하십시오. 스케줄링을 중지하려면 "at -l"을 수행하여 스케줄 된 작업 ID를 나열한 다음 "at -r id "를 사용하여 작업을 제거하십시오)

먼저 다음과 같이 해당 데몬 (atrun)을 시작해야 할 수도 있습니다 ( https://superuser.com/a/43680 참조 ).

sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.atrun.plist

장점 : 빠른 수정, sudo / root 액세스 불필요, 복잡한 스케줄 패턴 수행 용이 단점 : OS X의 표준 스케줄링 방법이 아님 (시작됨)


8
각하의 발사 된 구성 파일 예를 들어 키스 할 수 있습니다. 그러나 나는 shan하지 않는다.
Paul D. Waite

5
launchd는 OS X하에가는 길입니다.
zneak

그래, 내 인상이었다. 타이거에서 문제가 발생한 것처럼 들리지만 그 이후로 애플은 그것을 날카롭게 한 것 같습니다.
Paul D. Waite

Os 10.7.4에는 / etc / crontab 파일이 없습니다. ) : 그래서 나는 '어떤 crontab'을했는데 / usr / bin / crontab을 주었지만 파일이 깨졌습니다.
Hermann Ingjaldsson

@HermannIngjaldsson / usr / bin / crontab은 프로그램입니다. 를 사용하여 터미널에서 실행하면 crontab -e파일을 저장할 때 개인 crontab이 될 파일의 ​​터미널 기반 텍스트 편집기로 이동합니다.
Mark Reed

8

LaunchControl 은 실행 / 시작을위한 또 다른 GUI입니다. 다른 사람들이 언급 한 대안은 매일 스크립트를 완벽하게 실행할 수 있지만 LaunchControl을 사용하면 복잡한 스케줄을 구성 할 수 있습니다 (예 : "매주 1 회, 주말마다 2PM에서 8PM 사이"). 또한 실제로 작업을 확인하는 유일한 도구는 (AFAIK)입니다. 작업이 예상대로 작동하지 않으면 이유가 표시됩니다.

원하는 기간 동안 무료로 시도 할 수 있습니다.


3
무료로 시도 / 사용할 수 있지만 개발자는 라이센스 비용을 지불하는 것이 좋습니다. sites.fastspring.com/somazone/product/shop
Kent

1
물론. 처음 에이 답변을 게시 한 이유는 개발자를 지원하기위한 것입니다.
Mark Hall

5

CronniX 는 맥에서 크론 작업을 예약하기위한 훌륭한 GUI 프론트 엔드입니다. 크론 문서를 다루고 싶지 않다면 꽤 괜찮습니다.


2
  • iCal의 경우이 기사 를 읽으십시오 .
  • 당신이 cron구글에 대한 충분한 자습서를 찾아야 합니다.

그것은 당신이 원하는 것에 달려 있습니다 : iCal 스크립트는 로그인 한 상태에서만 실행되며 로그인 cron하지 않고 스크립트를 실행합니다. 처형되었다. cron이 일을하고 있습니다.



2

plist XML을 생성하는 간단한 무료 유틸리티는 다음과 같습니다.

http://www.gieson.com/Library/projects/utilities/launcha/

이 유틸리티를 사용하면 프로그램을 설치할 필요가 없으며 결과를 Library / LaunchAgents 폴더에 저장하면됩니다.


경고 : 이 도구를 사용하는 경우이 도구 RunAtStart가 true로 설정되어 있지 않은 경우 false로 설정되어 있는지 확인하십시오 . 파인더가 정지되어 부팅 할 때 데스크탑로드가 중지되는 이유를 알아내는 데 한 시간을 보냈습니다. 비활성화 RunAtStart해도 고정 일정을 방해하지 않습니다.
Andrea Lazzarotto

1

나는 항상 이것을 위해 Lingon 을 사용 하지만 개발이 끝난 것처럼 보입니다. Crontooie 시도해 볼 수 는 있지만 개인적으로 사용한 적이 없습니다. 또는 터미널에서 crontab 파일을 편집하십시오.


Lingon은 현재 활발한 발전을 보이고있는 것 같습니다 . 현재 버전 3은 이전 버전 2와 함께 AppStore에서 사용할 수 있습니다. 개인적으로 Lingon 3을 약간의 성공으로 사용하지만이 기사의 목적 상 다른 답변 (cron, at 등)에 언급 된 다른 도구보다 권장하지는 않습니다.
ssc

내가 Lingon을 사용한 마지막 시간은 2 년 전이었습니다. 당시에는 잘 작동했지만 최근 버전을 사용하지 않았습니다. 너무 안타깝게도 예전만큼 신뢰할 수는 없습니다.
Josh


0
sp@mactop ~ $ crontab -l
*/5 * * * * /usr/local/bin/cinco.sh
sp@mactop ~ $ cat /usr/local/bin/cinco.sh
#!/bin/sh
....cut....
sp@mactop ~ $ 

........ cut .... "명령 줄에 5 분마다 실행됩니다.

30 년의 발전과 '크론'은 여전히 ​​제가 가장 좋아하는 스케줄러입니다.

-씨


0

일정 관리 이벤트가 사용자의 요구를 충족시키는 경우 내장 된 Automator 응용 프로그램을 사용하여 일정 관리 이벤트에 의해 트리거되는 일정 관리 알람을 작성할 수도 있습니다. 내장 UI 기반 동작 중 일부를 사용하여 원하는 작업을 수행하거나 일부 응용 프로그램이나 사용자 정의 AppleScript, JavaScript 또는 셸 스크립트를 실행할 수도 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.