NDMS V2 + Entware

Используем пакеты, расширяющие возможности оборудования
Аватара пользователя
Zyxmon
Администратор
Сообщения: 1911
Зарегистрирован: 09 авг 2015, 15:33

Сообщение Zyxmon » 08 окт 2015, 19:28

Если использовать logger - то все должно быть нормально. logger в среде с TZ=... пишет в журнал правильное время. Это же самое первое, что было вчера проверено. Вы же редиректом пишете.

Замените `>> /var/log/messages ` на ` | logger` в том, что раньше приводили.

Yura270972
Сообщения: 58
Зарегистрирован: 29 сен 2015, 16:21

Сообщение Yura270972 » 08 окт 2015, 19:42

срипт сделан так же

Код: Выделить всё

#! /bin/sh
TZ="ICT-7"
logger "Test of cron every hourly"

вот вывод

Код: Выделить всё

Oct 08 22:35:01cron[2523](root) CMD (/opt/bin/run-parts /opt/etc/cron.5mins^I)
Oct 08 15:35:01rootTest of cron every hourly
Oct 08 22:35:18ndmUPnP::Manager: redirect and forward rules deleted: udp 56651.

если запускаю его из putty как /opt/etc/cron.5mins/logger.sh start

Код: Выделить всё

Oct 08 22:40:29rootTest of cron every hourly

время верное, если запускается cronом нет
со вторым скриптом также.

Аватара пользователя
Zyxmon
Администратор
Сообщения: 1911
Зарегистрирован: 09 авг 2015, 15:33

Сообщение Zyxmon » 08 окт 2015, 22:16

Как говорит Google - среда (environment) для заданий cron не наследуется.Нужно восстанавливать (описаны способы).

Что я могу посоветовать. В скрипт вместо
`TZ="ICT-7"` вставить `. /opr/root/.profile` (точка пробел файл). Тогда среда скрипта будет максимально близка к "putty".
Написать shebang #!/opt/bin/sh (а не непонятно что от NDMS)
попробовать другой вариант cron

Yura270972
Сообщения: 58
Зарегистрирован: 29 сен 2015, 16:21

Сообщение Yura270972 » 08 окт 2015, 23:11

Zyxmon писал(а):Источник цитаты `TZ="ICT-7"` вставить `. /opr/root/.profile` (точка пробел файл).

не помогает, в принципе дата в журнале это мелочи, другой вопрос как именно такая реализация повлияет на другие приложения.
попробовать другой вариант cron можно, если есть готовый, но это реш-е локальной проблемы, а не системной.
По совету разработчиков вставил в rc.unslung и .profile строку
export TZ=`cat /etc/TZ | tail -n 1` TZ учитывается автоматически.

Аватара пользователя
Zyxmon
Администратор
Сообщения: 1911
Зарегистрирован: 09 авг 2015, 15:33

Сообщение Zyxmon » 08 окт 2015, 23:42

Yura270972 писал(а):Источник цитаты другой вопрос как именно такая реализация повлияет на другие приложения.

Возможно это просто (стандартная) специфика cron. Поэтому и рекомендовал попробовать другую реализацию). В апплете busybox может быть упрощенная реализация. Задание TZ ни на что, кроме отображения времени не влияет.

Еще одно решение - перевести все в UTC и все будет с одим временем без учета зоны.
Спасибо за подсказку (автоматическое определение TZ) - это решение в первом варианте ответа отсутствовало.

Второй cron уже установлен. /opt/sbin/crond (буква d) и crontab у него в другом месте. Все это рассматривалось на старом форуме.

Код: Выделить всё

~ # mkdir -p /opt/var/spool/cron/crontabs
~ # crontab -e
~ # ls -p /opt/var/spool/cron/crontabs
cron.update  root

Как несложно догадаться - это файл /opt/var/spool/cron/crontab/root

Аватара пользователя
Zyxmon
Администратор
Сообщения: 1911
Зарегистрирован: 09 авг 2015, 15:33

Сообщение Zyxmon » 08 окт 2015, 23:52

Вот такой элементарный crontab

Код: Выделить всё

~ # cat /opt/var/spool/cron/crontabs/root
SHELL=/bin/sh
MAILTO=""
HOME=/opt/root
# ---------- ---------- Default is Empty ---------- ---------- #
# Please remove every minute task. It is for checking puposes
*/1 * * * * logger "Test of cron every minute"


У меня в лог пишет правильное время. Запускал crond из консоли (putty)
Последняя команда

Код: Выделить всё

date | logger


Вот кусок лога

Код: Выделить всё

[I] Oct  8 22:45:59 crond[271]: crond (busybox 1.23.2) started, log level 8 
[I] Oct  8 22:46:00 crond[271]: USER root pid 272 cmd logger "Test of cron every minute" 
[I] Oct  8 22:46:00 root: Test of cron every minute
[I] Oct  8 22:47:00 crond[271]: USER root pid 275 cmd logger "Test of cron every minute" 
[I] Oct  8 22:47:00 root: Test of cron every minute
[I] Oct  8 22:48:00 crond[271]: USER root pid 278 cmd logger "Test of cron every minute" 
[I] Oct  8 22:48:00 root: Test of cron every minute
[I] Oct  8 22:49:00 crond[271]: USER root pid 280 cmd logger "Test of cron every minute" 
[I] Oct  8 22:49:00 root: Test of cron every minute
[I] Oct  8 22:50:00 crond[271]: USER root pid 282 cmd logger "Test of cron every minute" 
[I] Oct  8 22:50:00 root: Test of cron every minute
[I] Oct  8 22:50:39 root: Thu Oct  8 22:50:39 MSK 2015 


Утром проверил - перезагрузил, crond стартует автоматом. Все работает:

Код: Выделить всё

[I] Oct  9 06:59:03 ndm: Core::System::Clock: system time has been changed. 
[I] Oct  9 06:59:03 ndm: Ntp::Client: time synchronized with "2.pool.ntp.org". 
[E] Oct  9 06:59:07 ndm: Cifs::ServerNQ: "papa" user has "cifs" tag but has no "nt" password, ignored. 
[I] Oct  9 06:59:07 ndm: Cifs::ServerNQ: service started. 
[E] Oct  9 06:59:21 crond[107]: time disparity of 6787 minutes detected 
[I] Oct  9 07:00:00 crond[107]: USER root pid 153 cmd logger "Test of cron every minute" 
[I] Oct  9 07:00:00 root: Test of cron every minute
[I] Oct  9 07:01:00 crond[107]: USER root pid 155 cmd logger "Test of cron every minute" 
[I] Oct  9 07:01:00 root: Test of cron every minute
[I] Oct  9 07:02:00 crond[107]: USER root pid 157 cmd logger "Test of cron every minute" 
[I] Oct  9 07:02:00 root: Test of cron every minute
[I] Oct  9 07:03:00 crond[107]: USER root pid 159 cmd logger "Test of cron every minute" 
[I] Oct  9 07:03:00 root: Test of cron every minute

Скопируйте файл S10cron -> S10crond, переименуйте внутри файла cron->crond
Управляйте через файл /opt/var/spool/cron/crontabs/root как написано для V1 - http://keenetic.zyxmon.org/wiki/doku.ph ... adach_cron

Аватара пользователя
Александр Рыжов
Сообщения: 443
Зарегистрирован: 12 авг 2015, 14:14
Откуда: Смоленск

Сообщение Александр Рыжов » 09 окт 2015, 08:45

Zyxmon писал(а):Источник цитаты У меня в лог пишет правильное время.
logger — это бинарник из прошивки? Если в заданиях cron не будут находиться бинарники по путям /opt/{,s}bin, то лучше в /opt/var/spool/cron/crontabs/root экспортировать вместе с другими переменными PATH=/opt/bin:/opt/sbin:/sbin:/bin:/usr/sbin:/usr/bin.

Аватара пользователя
Zyxmon
Администратор
Сообщения: 1911
Зарегистрирован: 09 авг 2015, 15:33

Сообщение Zyxmon » 09 окт 2015, 08:56

Александр Рыжов писал(а):Источник цитаты logger — это бинарник из прошивки?

А другого и нет. Абсолютно согласен с замечанием. Но сейчас все работает, т.к. похоже crond (апплет busybox) и его задания наследуют среду скрипта запуска. А там все задано. С "полноценным" cron несколько иначе.

Yura270972
Сообщения: 58
Зарегистрирован: 29 сен 2015, 16:21

Сообщение Yura270972 » 09 окт 2015, 23:29

Да. у меня все тоже заработало. В свое время про cron из busybox читал на старом форуме, но негде crontab там небыло сказано. Я правильно понимаю, что cron аналог cron из zyxware?

Аватара пользователя
Zyxmon
Администратор
Сообщения: 1911
Зарегистрирован: 09 авг 2015, 15:33

Сообщение Zyxmon » 10 окт 2015, 10:16

Yura270972 писал(а):Источник цитаты Я правильно понимаю, что cron аналог cron из zyxware?


Я вроде Выше все объяснил. Если я правильно понимаю вопрос - ответ "да".

Как ранее говорил, выкладываю версию с правильной установкой времени для Entware приложений.
http://keenetic.zyxmon.org/files/ndms/z ... pselsf.ipk


Вернуться в «Entware/Qnapware/Optware/Zyxware - обсуждаем репозитории пакетов»

Кто сейчас на конференции

Всего 2 посетителя :: 1 зарегистрированный, 0 скрытых и 1 гость (основано на активности пользователей за последние 5 минут)
Больше всего посетителей (162) здесь было 16 ноя 2019, 18:33

Сейчас этот форум просматривают: Yandex [Bot] и 1 гость