По умолчанию агенты на кроне запускаются раз в минуту.
Для запуска раз в секунду используется скрипт-прослойка.
Утилиты nice и ionice устанавливаем отдельно под рутом, если не установлены. Утилиты используются для запуска агентов на кроне с более низким приоритетом, чем другие процессы на сервере.
Для запуска раз в секунду используется скрипт-прослойка.
# Содержимое command-every-second.sh
#!/bin/bash
command=$@
# Пробелы и косые в команде заменяются на нижние подчеркивания.
no_spaces=`echo $command | sed -e 's/\s/_/g' -e 's|/|_|g'`
# Имя файла для блокировки на время выполнения основной команды.
lockfile=/tmp/$no_spaces.lock
# Раз в секунду пытаемся поставить блокировку на команду и выполнить.
for i in {1..60}
do
/usr/bin/flock -n $lockfile $command
/bin/sleep 1
done
rm $lockfile
# Пример команды для крона.
crontab -e
* * * * * nice -n 1 ionice -c2 -n4 /var/www/www-root/data/command-every-second.sh /opt/php81/bin/php -f /var/www/www-root/data/www/example.ru/bitrix/php_interface/cron_events.php >/dev/null 2>&1
|
Утилиты nice и ionice устанавливаем отдельно под рутом, если не установлены. Утилиты используются для запуска агентов на кроне с более низким приоритетом, чем другие процессы на сервере.