From 381e97a564c69cfd8345a1a0b5d1691f60477427 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D0=BE=D0=B1=D1=8B=D1=80=D0=B5=D0=B2=20=D0=90=D0=BD?= =?UTF-8?q?=D0=B4=D1=80=D0=B5=D0=B9?= Date: Sun, 1 Nov 2026 15:24:23 +0300 Subject: [PATCH] =?UTF-8?q?Keenetic:=20health/pull=20=D0=BF=D0=BE=20cron?= =?UTF-8?q?=20=D1=80=D0=B5=D0=B0=D0=BB=D1=8C=D0=BD=D0=BE=20=D0=B7=D0=B0?= =?UTF-8?q?=D0=BF=D1=83=D1=81=D0=BA=D0=B0=D1=8E=D1=82=D1=81=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Задачи писались в /opt/etc/crontab, который демоны cron на Keenetic не читают, а Entware-пакет cron (vixie) задачи не выполнял. Теперь busybox crond и crontab пользователя root; cron ставится, если нет S10cron. Co-Authored-By: Claude Opus 5.5 (cherry picked from commit cbc1bd712f4ac0854d00b18d349d0a9a7d41cc8b) --- overlay/install-router.sh.template | 33 ++++++++++++------------------ 1 file changed, 13 insertions(+), 20 deletions(-) diff --git a/overlay/install-router.sh.template b/overlay/install-router.sh.template index 1e69c5b..f822946 100644 --- a/overlay/install-router.sh.template +++ b/overlay/install-router.sh.template @@ -456,27 +456,20 @@ deploy_health_monitor() { [ -f "$PHOBOS_DIR/phobos-pull.sh" ] || pull_line="" if [ "$ROUTER_PLATFORM" = "keenetic" ]; then - # Install cron if not present (Entware) - if ! command -v crontab >/dev/null 2>&1 && command -v opkg >/dev/null 2>&1; then - log " Установка cron через opkg..." - opkg update >/dev/null 2>&1 - opkg install cron >/dev/null 2>&1 - /opt/etc/init.d/S10cron start >/dev/null 2>&1 || true - fi - local cron_file="/opt/etc/crontab" - # Create crontab file if missing - if [ ! -f "$cron_file" ]; then - mkdir -p /opt/etc - touch "$cron_file" - fi - if ! grep -q "phobos-health" "$cron_file" 2>/dev/null; then - echo "$cron_line" >> "$cron_file" - log " Cron (health) добавлен в $cron_file" - fi - if [ -n "$pull_line" ] && ! grep -q "phobos-pull" "$cron_file" 2>/dev/null; then - echo "$pull_line" >> "$cron_file" - log " Cron (pull) добавлен в $cron_file" + # Демон — busybox crond (есть в Entware как /opt/sbin/crond). Entware-пакет cron + # (vixie, PROCS=cron) на Keenetic задачи не выполнял — заменяем (01.11.2026) + local I=/opt/etc/init.d/S10cron + if [ ! -x $I ] || grep -q "^PROCS=cron$" $I; then + $I stop >/dev/null 2>&1 + printf '#!/bin/sh\n\nENABLED=yes\nPROCS=crond\nARGS="-c /opt/var/spool/cron/crontabs -b"\nPREARGS=""\nDESC=$PROCS\nPATH=/opt/sbin:/opt/bin:/usr/sbin:/usr/bin:/sbin:/bin\n\n. /opt/etc/init.d/rc.func\n' > $I + chmod +x $I fi + mkdir -p /opt/var/spool/cron/crontabs + # 01.11.2026: демоны cron на Keenetic (busybox crond, Entware cron) читают crontab + # пользователя root, а не /opt/etc/crontab — туда писать бесполезно + sed -i "/phobos-health\|phobos-pull/d" /opt/etc/crontab 2>/dev/null + (crontab -l 2>/dev/null | grep -v "phobos-health" | grep -v "phobos-pull"; echo "$cron_line"; [ -n "$pull_line" ] && echo "$pull_line") | crontab - + log " Cron добавлен через crontab (health + pull)" /opt/etc/init.d/S10cron restart >/dev/null 2>&1 || true elif [ "$ROUTER_PLATFORM" = "openwrt" ]; then (crontab -l 2>/dev/null | grep -v "phobos-health" | grep -v "phobos-pull"; echo "$cron_line"; [ -n "$pull_line" ] && echo "$pull_line") | crontab -