답변:
10 초마다 작업을 예약 할 수는 없지만 매 분마다 작업이 실행되도록 예약하고 10 초 간격으로 루프에서 잠을 자고 있다고 가정합니다. 이것은 10 초 간격이 만료되기 전에 명령이 완료된 것으로 가정하거나 다음 명령이 실행될 때 겹치게됩니다. 이것은 불안한 해결책처럼 느껴지지만 스크립트의 주요 명령을 매우 짧게 실행할 수 있다면 작동합니다.
#!/bin/bash
i=0
while [ $i -lt 6 ]; do
/run/your/command &
sleep 10
i=$(( i + 1 ))
done
나는 지난주 비슷한 일을했다. 내 솔루션은 표준 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이 로그 파일로 경로 재 지정됩니다.
내가 사용하는 거라고 MONIT을 10 초 사이클 시간을 설정합니다. 이것은 cron 시스템 외부에서 이것을 관리하는 확실한 방법입니다.
15 초 간격으로 실행해야하는 특정 스크립트를 사용하여이 작업을 수행합니다.
zfs 풀의 증분 / 연속 백업을 수행하는 방법을 참조하십시오.
예를 들어 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 초 미만으로 이동해야하는 경우 날짜 명령에 마이크로 초를 추가하십시오.