문제

30분마다 스크립트를 실행하려면 어떻게 해야 합니까?OS마다 다른 방법이 있다고 가정합니다.저는 OS X를 사용하고 있습니다.

도움이 되었습니까?

해결책

그냥 사용 출시됨.이는 매우 강력한 실행 프로그램 시스템이자 동시에 Mac OS X용 표준 실행 프로그램 시스템이기도 합니다(현재 OS X 버전은 이 실행 프로그램이 없으면 부팅조차 불가능합니다).잘 모르시는 분들을 위해 launchd (또는 일반적으로 OS X의 경우) 이는 다음과 같은 교배종과 같습니다. init, cron, at, SysVinit(init.d), inetd, upstart 그리고 systemd.이 모든 프로젝트의 개념을 차용하면서도 다른 곳에서는 찾을 수 없는 것들을 제공합니다.

모든 서비스/작업은 파일입니다.파일 위치는 질문에 따라 다릅니다."이 서비스는 언제 실행해야합니까?" "서비스에는 어떤 특권이 필요합니까?"

시스템 작업은 다음으로 이동합니다.

/Library/LaunchDaemons/

실행 여부는 사용자가 시스템에 로그인했는지 여부에 관계없이 실행됩니다."루트" 권한으로 시작됩니다.

만약 그들이 다음의 경우에만 실행된다면 어느 사용자가 로그인되어 있으면 다음으로 이동합니다.

/Library/LaunchAgents/

방금 로그인한 사용자의 권한으로 실행됩니다.

만약 그들이 실행된다면 로그인되어 있으면 다음으로 이동합니다.

~/Library/LaunchAgents/

~는 HOME 디렉토리입니다.이러한 작업은 마치 명령줄을 사용하거나 Finder에서 파일을 두 번 클릭하여 시작한 것처럼 사용자의 권한으로 실행됩니다.

도 있다는 점 참고하세요 /System/Library/LaunchDaemons 그리고 /System/Library/LaunchAgents, 하지만 평소와 같이 아래의 모든 항목은 /System OS X에 의해 관리됩니다.당신이 실제로 무엇을 하고 있는지 알지 않는 이상 거기에 어떤 파일도 두지 말고 어떤 파일도 변경해서는 안 됩니다.시스템 폴더를 어지럽히면 시스템을 사용할 수 없게 될 수 있습니다(심지어 다시 부팅을 거부하는 상태가 될 수도 있습니다).이는 Apple이 launchd 부팅 중에 시스템을 시작하고 실행하고, 필요에 따라 서비스를 자동으로 시작하고, 시스템 유지 관리 작업을 수행하는 등의 작업을 수행합니다.

모든 launchd 작업에 plist 형식의 파일이 있습니다.역방향 도메인 이름 표기법이 있어야 합니다.예:작업 이름을 지정할 수 있습니다

com.example.my-fancy-task.plist

이 plist에는 다양한 옵션과 설정이 있을 수 있습니다.한 손에 하나씩 쓰는 것은 차선책입니다. 무료 도구를 구하는 것이 좋습니다. 링곤 작업을 생성합니다.이 도구는 예전에는 무료였지만 이제는 앱 스토어에서 5달러, 비 앱 스토어 버전에서는 10달러입니다(비 앱 스토어 버전은 훨씬 더 강력하며 이미 비용을 지불할 계획이라면 진지하게 비 앱 스토어를 구입하세요) 버전).프리웨어나 오픈 소스인 유사한 도구를 아는 사람이 있으면 댓글에 한 줄을 남겨주세요. 그러면 차라리 그 도구를 추천하겠습니다(여기서 상업용 소프트웨어에 대해 광고하고 싶지는 않습니다).

예를 들면 다음과 같이 보일 수 있습니다.

<?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.example.my-fancy-task</string>
    <key>OnDemand</key>
    <true/>
    <key>ProgramArguments</key>
    <array>
        <string>/bin/sh</string>
        <string>/usr/local/bin/my-script.sh</string>
    </array>
    <key>StartInterval</key>
    <integer>1800</integer>
</dict>
</plist>

이 에이전트는 1800초마다(30분마다) 쉘 스크립트 /usr/local/bin/my-script.sh를 실행합니다.특정 날짜/시간에 작업을 실행하도록 할 수도 있고(기본적으로 launchd는 cron이 할 수 있는 모든 작업을 수행할 수 있음) "OnDemand"를 비활성화하여 launchd가 프로세스를 영구적으로 실행하도록 할 수도 있습니다(종료되거나 충돌이 발생하면 launchd가 즉시 프로세스를 다시 시작합니다). .프로세스가 사용할 수 있는 리소스의 양을 제한할 수도 있습니다(앞서 말했듯이 Lingon은 이러한 모든 설정을 멋진 UI 인터페이스에 표시합니다).

업데이트: 일지라도 OnDemand 여전히 지원되지만 더 이상 사용되지 않습니다.새 설정의 이름은 다음과 같습니다. KeepAlive, 이는 훨씬 더 의미가 있습니다.부울 값을 가질 수 있으며, 이 경우에는 다음과 정반대입니다. OnDemand (다음으로 설정 false 처럼 행동한다 OnDemand ~이다 true 그리고 그 반대).새로운 훌륭한 기능은 부울 값 대신 사전 값을 가질 수도 있다는 것입니다.사전 값이 있는 경우 작업이 계속 유지되는 상황을 보다 세밀하게 제어할 수 있는 몇 가지 추가 옵션이 있습니다.예:프로그램이 종료 코드 0으로 종료되는 동안, 디스크에 특정 파일/디렉토리가 존재하는 동안, 다른 작업도 살아있는 경우 또는 네트워크가 현재 작동 중인 경우에만 활성 상태로 유지됩니다.

또한 명령줄을 통해 수동으로 작업을 활성화/비활성화할 수 있습니다.

launchctl <command> <parameter>

명령은 로드 또는 언로드되어 plist를 로드하거나 다시 언로드할 수 있습니다. 이 경우 매개변수는 파일 경로입니다.또는 명령은 해당 작업을 시작하거나 중지하기 위해 시작 또는 중지일 수 있습니다. 이 경우 매개변수는 레이블(com.example.my-fancy-task)입니다.다른 명령과 옵션도 존재합니다.

Apple의 설명서를 참조하세요. plist 형식 그리고 launchctl 명령줄 도구 (형식/옵션은 OS X 릴리스마다 다르기 때문에 위에서 OS X 버전을 선택할 수 있습니다.)

다른 팁

매우 편리한 plist 발전기를 사용할 수 있습니다. http://launched.zerowidth.com/ (아무것도 살 필요 없어…)

그것은 당신에게 이미 추천 된 새로운 예정된 작업을 등록하기 위해 쉘 1 라이너를 제공합니다. 발사

MacOSX에는 다음과 같은 옵션이 있습니다.

개인적인 경험에서 Cron은 가장 신뢰할 수 있습니다. 내가 테스트했을 때, 런칭에는 많은 버그와 단점이있었습니다. iCal 알람은 로그인 할 때만 실행됩니다 (그러나 그것은 당신이 선호하는 것일 수 있습니다).

Mecki가 지적했듯이 Launkd는 이것과 함께 갈 수있는 방법 일 것입니다. 호출 된 GUI 인터페이스가 있습니다 링턴 손으로 시작 파일을 편집하는 것과는 달리 체크 아웃 할 수 있습니다.

Lingon은 Mac OS X Leopard 10.5 용 편집 시작 구성 파일을 작성하기위한 그래픽 사용자 인터페이스입니다.

한조각...

이 버전에서 구성 파일을 편집하는 것이 그 어느 때보 다 쉬우 며 두 가지 모드가 있습니다. 매우 간단한 인터페이스 및 전문가 모드에서 가장 일반적인 설정을 쉽게 사용할 수있는 기본 모드로 텍스트에 직접 모든 설정을 추가하거나 메뉴를 통해 삽입 할 수 있습니다.

Mac OS는 있습니다 자동 자 도구와 동일한 도구 작업 스케줄러 창에서. 자동기를 사용하면 매일 작업을 예약하고 재발 캘린더 이벤트와 작업을 연결하여 매일 지정된 시간에 스크립트를 실행할 수 있습니다. 링크를 참조하십시오 Mac OS에서 매일 스크립트를 실행합니다

Apple Scripts의 경우 특별한 캘린더를 설정하고 경보를 사용하여 주기적으로 실행합니다. 명령 줄 도구의 경우 시작을 사용합니다.

참고 : 내가 그렇게 그리워하는 동안, 그것은 siplicity를 그리워하지만, Cron은 OS X의 과거의 일입니다. 그것은 Panther의 감시자였습니다. Tiger 이후로 출시되었습니다. 따라서 Leopard Cron을 실행하는 경우 옵션이 아닙니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top