리눅스에서 10 초마다 실행되는 크론 작업을 어떻게 예약 할 수 있습니까?


14

나는 매분마다하는 방법을 알고 있지만 약 10 초마다 어떻게됩니까?

답변:


10

10 초마다 작업을 예약 할 수는 없지만 매 분마다 작업이 실행되도록 예약하고 10 초 간격으로 루프에서 잠을 자고 있다고 가정합니다. 이것은 10 초 간격이 만료되기 전에 명령이 완료된 것으로 가정하거나 다음 명령이 실행될 때 겹치게됩니다. 이것은 불안한 해결책처럼 느껴지지만 스크립트의 주요 명령을 매우 짧게 실행할 수 있다면 작동합니다.

#!/bin/bash
i=0

while [ $i -lt 6 ]; do
  /run/your/command &
  sleep 10
  i=$(( i + 1 ))
done

비슷한 작업을 수행합니다 ... crontab에서 *를 사용하면 스크립트가 무리와 루프를 영원히 사용하고 잠금을 얻을 수 없으면 종료되지 않습니다.
Peter

22

나는 지난주 비슷한 일을했다. 내 솔루션은 표준 cron 항목을 원하는 빈도로 곱하는 것이 었습니다. 내 crontab은 다음과 같습니다.

* * * * * /usr/local/bin/php /var/www/myscript.php
* * * * * sleep 10; /usr/local/bin/php /var/www/myscript.php
* * * * * sleep 20; /usr/local/bin/php /var/www/myscript.php
* * * * * sleep 30; /usr/local/bin/php /var/www/myscript.php
* * * * * sleep 40; /usr/local/bin/php /var/www/myscript.php
* * * * * sleep 50; /usr/local/bin/php /var/www/myscript.php

디버깅을 위해 myscript.php의 결과를 확인하려면 추가하십시오.

&> /tmp/myscipt.log

위의 crontab의 각 줄에. 그런 다음 stderr 및 stdout이 로그 파일로 경로 재 지정됩니다.


2
창조적 인 cron 사용을위한 +1
shodanshok

2
이것이 IMHO 최고의 솔루션입니다. 현재 수행중인 작업이 명확하며 스크립트 또는 타사 솔루션이 필요하지 않습니다.
Jeremy


0

Cron은 최소 1 분만 허용합니다. 당신은 이것을 시도 할 수 있습니다-

* * * * * ( sleep 10 ; /usr/bin/wget http://api.us/application/)

0

예를 들어 5 초 미만으로 10 초 미만으로 가고 싶다면 다음과 같은 작은 스크립트로 작업자 루프를 만드는 것이 좋습니다.

#!/bin/bash

INTERVAL=5
while true; do

  echo "do something"

  # wait for next interval
  WAIT_UNTIL=$(($(date +%s) + $INTERVAL))
  while [ $(date +%s) -lt $WAIT_UNTIL ]; do
    sleep 1
  done

done

1 초 미만으로 이동해야하는 경우 날짜 명령에 마이크로 초를 추가하십시오.


0
* * * * * script to run
* * * * * sleep 10; script to run
* * * * * sleep 20; script to run

여기 스크립트는 10 초 간격으로 실행할 수 있습니다 ...


이 솔루션은 이미 5 년 전에 게시되었습니다. 다시 게시하지 말고 공감해야합니다.
제럴드 슈나이더
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.