Mac의 Wake/CRON

Mac의 Wake/CRON

macOS Catalina를 실행하는 오래된 iMac이 있습니다. 2개의 CRON 작업이 예약되어 있습니다. 하나는 오전(예: 오전 8시)에, 다른 하나는 오후(예: 오후 5시)에 실행됩니다. CRON 작업은 만일을 대비해 일부 R 스크립트를 실행합니다.

머신이 절전 모드이면 CRON 작업이 실행되지 않는다는 점을 감안할 때 두 작업이 모두 실행되도록 하는 가장 좋은 방법이 무엇인지 궁금합니다. 이제 Mac이 아침에 "깨어나고" 저녁에 "종료"되도록 예약했지만 완전히 잠자기 상태가 되지 않는 한 오후 작업은 수행되지 않습니다.

저는 두 가지 가능한 해결책을 생각했습니다. 첫째, 서로 다른 계획으로 서로 다른 사용자 프로필을 설정합니다. 하지만 컴퓨터당 하나의 계획만 있기 때문에 이 방법은 작동하지 않습니다. 둘째, "낮잠", 하지만 그것 역시 작업을 수행할 수 없는 것 같거나 적어도 일관되게 수행하지 못하는 것 같습니다. 이제는 잠을 자지 못하게 하거나 오후에 마우스를 움직여 기계를 깨우는 로봇을 만드는 것 외에 다른 옵션이 부족합니다...

더 좋은 아이디어가 있나요?

고마워요, 필립

답변1

Apple은 이를 단계적으로 폐지할 예정이었습니다 cron(하지만 너무 오랫동안 지속되어 처음 발표했을 때를 잊어버렸습니다 :-)). 그러나 launchd이를 사용하면 문제를 쉽게 해결할 수 있습니다.

에서 man launchd.plist:

StartCalendarInterval <dictionary of integers or array of dictionaries of integers>

This optional key causes the job to be started every calendar interval as specified. 
Missing arguments are considered to be wildcard. The semantics are similar to crontab(5)
in how firing dates are specified. Multiple dictionaries may be specified in an array
to schedule multiple calendar intervals.

Unlike cron which skips job invocations when the computer is asleep, launchd will start
the job the next time the computer wakes up.  If multiple intervals transpire before the
computer is woken, those events will be coalesced into one event upon wake from sleep.

이 답변StackOverflow 에는 launchd.plist간단한 cronjob을 위한 기본 템플릿이 있습니다.

관련 정보