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.