Odpowiedzi:
Nie możesz zaplanować zadania co dziesięć sekund, ale przypuszczam, że możesz zaplanować uruchamianie zadania co minutę i spanie w pętli co 10 sekund. Będzie to zależało od tego, czy polecenie zostanie wykonane przed upływem dziesięciosekundowego interwału, w przeciwnym razie wystąpi nakładanie się, gdy uruchomione zostanie następne polecenie. Wydaje się to niepewnym rozwiązaniem, ale jeśli możesz zagwarantować bardzo krótkie wykonanie głównego polecenia skryptu, zadziałałoby.
#!/bin/bash
i=0
while [ $i -lt 6 ]; do
/run/your/command &
sleep 10
i=$(( i + 1 ))
done
W zeszłym tygodniu miałem podobne zadanie. Moim rozwiązaniem było pomnożenie standardowych wpisów cron do pożądanej częstotliwości. Mój crontab wygląda następująco:
* * * * * /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
Jeśli chcesz sprawdzić wyniki myscript.php, np. Do debugowania, po prostu dołącz
&> /tmp/myscipt.log
do każdej linii na powyższym crontabie. Następnie stderr i stdout zostają przekierowane do pliku dziennika.
Chciałbym użyć Monit i ustawić czas cyklu na 10 sekund. Jest to czysty sposób na zarządzanie tym poza systemem CRON.
Robię to z pewnymi skryptami, które muszą być uruchamiane co 15 sekund.
Zobacz: Jak wykonywać przyrostowe / ciągłe kopie zapasowe puli ZFS?
Jeśli chcesz przejść poniżej 10 sekund, np. 5 sekund, zalecam wykonanie pętli roboczej za pomocą takiego skryptu:
#!/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
Jeśli potrzebujesz przejść poniżej sekundy, dodaj mikrosekundy do polecenia date.
* * * * * script to run
* * * * * sleep 10; script to run
* * * * * sleep 20; script to run
Tutaj skrypt można uruchomić z interwencją 10 sekund ...