Mac에서 30 초마다 스크립트 실행


2

나는 나를 위해 빈번하지 않은 60 초마다 실행되는 cronjob을 만들었습니다. 그것은 간단한 명령입니다 : wget localhost Mac에서 30 초, 16 초마다이 명령을 어떻게 실행할 수 있습니까?

답변:


6

명령을 사용하여 실행 발사 된 대신에. 에서 속성 목록 파일을 사용하십시오. ~/Library/LaunchAgents/ 과 /System/Library/LaunchAgents/ 영감으로. developer.apple.com에 관한 문서 .

실행 간격을 예를 들어 지정하려면 다음을 입력하십시오. 30 초 동안 다음을 사용하십시오.

<key>StartInterval</key>
<integer>30</integer>

launchd.plist 파일을 생성하는 좋은 도구는 Lingon .
— NReilingh

3
이 대답은 프로그램 실행 시간이 어떻게 영향을 미치는지 궁금해 지므로 몇 가지 테스트를 수행했습니다. 프로그램 실행 시간이 30 초 미만이면 매 30 초마다 시작됩니다 (예 : 1 : 00:00이고 1:00:17까지 실행되고 다음 실행은 1:00:30이 아닌 1:00:47에 시작됩니다. OTOH가 30 초 이상 걸리면 다음 실행은이 실행이 끝날 때까지 기다립니다 (예 : 1시 34 분까지 실행하면 다음 실행은 1시 34 분에 시작됩니다).
— Gordon Davisson

4

당신은 다음을 시도 할 수 있습니다 :

while true
do
<program>
sleep <time>
done

적절한 경우 교체하십시오.

편집 : 매 초마다 실행이 끝나면, 제어 + 기음 그걸 죽일거야.


가정 <program> 0 초보다 오래 걸리며, 처음에는 약간 꺼져있을 것이고, 오프셋 시간은 길어질수록 누적됩니다.
— Daniel Beck

참된. 이는 프로그램이 잠시 이상 실행되지 않으면 실행을 놓칠 수있는 launchd와는 정반대의 행동입니다.
— alesplin

프로그램이 계속 실행 중일 때 프로그램은 이러한 실행을 놓칩니다. Doug의 해결책 만 얻을 수 있습니다. 나는 충분히 알지 못합니다. cron 그래도.
— Daniel Beck

그게 내가 말하는거야. 내 것은 달리고, & lt; 시간 & gt; 프로그램 자체를 배경으로하지 않는 한, 실행하는 데 걸리는 시간과 상관없이 다시 실행하십시오. launchd는 프로그램을 실행하고, & lt; time & gt; 그것은 끝날 때까지 기다릴 것이다. Cron (내가 이해하는 한)은 & lt; time & gt; (& lt; time & gt;이 cron의 세분성에 맞으면) & lt; time & gt;보다 길면 여러 인스턴스가 동시에 실행될 수 있습니다. 그래서 그는 자신이 원하는 행동에 대해 3 가지 옵션을 가지고 있습니다. OP가 원하는 것이 무엇인지 알지 못해서, 나는 cron이나 launchd보다 더 단순한 대안을 게시하려고 생각했다.
— alesplin

0

매분마다 실행되는 bash 스크립트를 작성하십시오. wget을 루프에 넣거나 단순히 연속적인 호출을 sleep 30 각 통화 사이.

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