#macos #cron
#macos #cron
Вопрос:
Я пытаюсь запустить на mac php-скрипт с использованием cron. Я хочу, чтобы этот php-скрипт запускался каждые 10 секунд. Я прочитал несколько источников в Интернете, и, насколько я понимаю, будет лучше, если я использую launchd. В любом случае, я пытаюсь заставить его работать с cron, а затем, если он работает нормально, я мог бы попробовать использовать launchd.
Итак, вот что я делаю, но он запускается каждую минуту:
*/1 * * * * /usr/bin/curl --silent --compressed http://localhost:8888/atms_final/data/demos/editing/loop_tasks.php
Как я могу изменить его для запуска каждые 10 секунд
Комментарии:
1. Cron допускает только минимум одну минуту. Что вы могли бы сделать, так это написать сценарий оболочки с бесконечным циклом, который запускает вашу задачу, а затем переходит в спящий режим на 10 секунд. Таким образом, ваша задача будет выполняться более или менее каждые 10 секунд, в зависимости от того, сколько времени занимает сама задача.
Ответ №1:
cron
слишком грубовато для 10-секундной частоты повторения.
Подумайте о создании небольшого скрипта, подобного этому, и сохраните его как curler
#!/bin/bash
while :; do
echo curling...
/usr/bin/curl --silent --compressed http://localhost:8888/atms_final/data/demos/editing/loop_tasks.php
sleep 10
done
Затем в терминале вы можете сделать его исполняемым (просто сделайте это один раз):
chmod x curler
Затем вы можете запустить это в терминале:
./curler
Или вы можете запустить один curler
раз из cron
.
Ответ №2:
Вы можете сделать это следующим образом —
*/1 * * * * curl --silent --compressed http://localhost:8888
*/1 * * * * sleep 10; curl --silent --compressed http://localhost:8888
*/1 * * * * sleep 20; curl --silent --compressed http://localhost:8888
*/1 * * * * sleep 30; curl --silent --compressed http://localhost:8888
*/1 * * * * sleep 40; curl --silent --compressed http://localhost:8888
*/1 * * * * sleep 50; curl --silent --compressed http://localhost:8888
Объяснение —
Таким образом, технически у вас есть 6 заданий cron, которые выполняются каждую минуту, но у каждого задания есть время ожидания, из-за чего все выполняются с разницей в 10 секунд.