Ответы:
Вы не можете планировать задание каждые десять секунд, но я полагаю, что вы можете запланировать выполнение задания каждую минуту и спать в цикле с интервалами в 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?
Если вы хотите перейти на 10 секунд, например, 5 секунд, я рекомендую сделать рабочий цикл с небольшим сценарием, например:
#!/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
Если вам нужно перейти меньше секунды, добавьте микросекунды к команде даты.
* * * * * script to run
* * * * * sleep 10; script to run
* * * * * sleep 20; script to run
Здесь скрипт можно запустить с интервалом в 10 секунд ...