Почему происходит самопроизвольный повторный запуск Крона?

Обсуждение программ nnCron и nnCron LITE

Почему происходит самопроизвольный повторный запуск Крона?

Postby I1iF » Wed, 02 May 2012, 14:46

Периодически происходит самопроизвольный запуск Крона с перезапуском всех задач. Как это остановить?

Информация из пункта "О программе":
nncron.exe v 1.93b10 Build 1141 03.12.2009
tm.exe v 1.93b10 Build 569 03.12.2009
Directory: D:\Sys\Utils\nnCron7
Windows XP (6.1.7601) Service Pack 1
shell32.dll 6.1.7601

Вин-7 32ь
Запускается так: D:\Sys\Utils\nnCron7\nncron.exe -ns -dir D:\Sys\Utils\nnCron7
http://dl.dropbox.com/u/33764550/0501cron.log
User avatar
I1iF
 
Posts: 34
Joined: Fri, 25 Jan 2008, 12:32

Re: Почему происходит самопроизвольный повторный запуск Крон

Postby Morituruz » Wed, 02 May 2012, 15:16

Судя по периодичности, больше похоже на то, что nncron падает при выполнении какой-то задачи и запускается вновь nnguard-ом.
User avatar
Morituruz
 
Posts: 725
Joined: Sun, 14 Oct 2007, 01:51

Re: Почему происходит самопроизвольный повторный запуск Крон

Postby I1iF » Wed, 02 May 2012, 15:26

Периодическая только: TASK: t_Главная_догога_R, выполняется каждые 30 минут. Остальные только при старте системы.
Отключил, наблюдаю.
User avatar
I1iF
 
Posts: 34
Joined: Fri, 25 Jan 2008, 12:32

Re: Почему происходит самопроизвольный повторный запуск Крон

Postby I1iF » Wed, 02 May 2012, 15:35

Падает то он однозначно, только не понятно почему.
User avatar
I1iF
 
Posts: 34
Joined: Fri, 25 Jan 2008, 12:32

Re: Почему происходит самопроизвольный повторный запуск Крон

Postby I1iF » Thu, 03 May 2012, 18:13

Без той задачи, которую отключил, не падает. Да и с ней полгода нормально работал, что-же случилось?
Вот виновница падений:
Code: Select all
#( t_Главная_догога_R
 NoActive
Time: */30 * * * * *
SingleInstance
Rule: ONLINE?
;
0 VALUE zhtml
\ 100 кБ на страничку должно хватить:
100000 ALLOCATE THROW TO zhtml
\ а тут будем хранить заголовок темы на форуме:
fVAR glav_dor_R
Action:
\ скачиваем вот эту страницу:
S" http://rutracker.org/forum/viewtopic.php?t=3900751" HTTP-GET 0=
IF
   2DUP zhtml ZPLACE
   \ ищем то, что находится в коде страницы между 3550420"> и </a></h1>
   \ Можно конечно сразу текст написать искомый, но совпадение в коде страницы должно быть только одно!
   S" /(3900751\x22\>)?#9.+(<\/a><\/h1>)?=/i" RE-ALL
      \ сравниваем найденное (если нашлось конечно) с сохранённой строчкой
      $0 glav_dor_R COMPARE 0<>
      IF
    \ не забываем сохранить новый заголовок:
         $0 TO glav_dor_R
         \ шлём письмо:
    S" http://rutracker.org/forum/viewtopic.php?t=3900751" \ текст
    S" Главная дорога R" \ тема
    S" xxxxl@gmail.com" \ mail кому
    S" xxxx@mail.ru" \ mail от кого
    S" xxx" \ логин
    S" xxx" \ пароль
    S" smtp.mail.ru" 25 \ адрес smtp сервера и порт
    SMTP-SEND&ATTACH ?DUP IF MSG: "ошибка отправки: %0 esPICK%" THEN
      ELSE
         \ заголовок темы не изменился:
         \ MSG: "Без изменений"
      THEN
   ;RE-ALL
ELSE
   2DROP
   \ что-то не получилось скачать
   16 S" checking_for_new_porn" DROP S" Ошибка загрузки страницы" DROP 0 MessageBoxA DROP
THEN
)#
User avatar
I1iF
 
Posts: 34
Joined: Fri, 25 Jan 2008, 12:32

Re: Почему происходит самопроизвольный повторный запуск Крон

Postby Morituruz » Thu, 03 May 2012, 19:37

checking_for_new_porn

Так это ж моя задача, вот так встреча :D
Страничка, которую вы скачиваете, перевалила за 100 КБ (в связи с ростом информации в описании), а памяти на z строку выделяется ровно 100.
Вообще-то эта задача сильно устарела, я перешёл на скачивание с помощью curl и плюс другие фишки.
Я в ближайшее время выложу новый текст задачи для скачивания, а вы уж там воткнёте отсылку почты куда надо.
User avatar
Morituruz
 
Posts: 725
Joined: Sun, 14 Oct 2007, 01:51

Re: Почему происходит самопроизвольный повторный запуск Крон

Postby VoidVolker » Thu, 03 May 2012, 19:59

Moriturus, лол, спалился :lol:
Т.к. выделяемая для странички память не используется(и зачем её вообще выделять-то - страница так и так оказывается в ОЗУ, а её адрес и размер на стеке) - то и выделять её не надо.
Code: Select all
#( t_Главная_догога_R
 NoActive
Time: */30 * * * * *
SingleInstance
Rule: ONLINE?
;
\ а тут будем хранить заголовок темы на форуме:
fVAR glav_dor_R
Action:
\ скачиваем вот эту страницу:
S" http://rutracker.org/forum/viewtopic.php?t=3900751" HTTP-GET 0=
IF
   \ ищем то, что находится в коде страницы между 3550420"> и </a></h1>
   \ Можно конечно сразу текст написать искомый, но совпадение в коде страницы должно быть только одно!
   S" /(3900751\x22\>)?#9.+(<\/a><\/h1>)?=/i" RE-ALL
      \ сравниваем найденное (если нашлось конечно) с сохранённой строчкой
      $0 glav_dor_R COMPARE 0<>
      IF
    \ не забываем сохранить новый заголовок:
         $0 TO glav_dor_R
         \ шлём письмо:
    S" http://rutracker.org/forum/viewtopic.php?t=3900751" \ текст
    S" Главная дорога R" \ тема
    S" xxxxl@gmail.com" \ mail кому
    S" xxxx@mail.ru" \ mail от кого
    S" xxx" \ логин
    S" xxx" \ пароль
    S" smtp.mail.ru" 25 \ адрес smtp сервера и порт
    SMTP-SEND&ATTACH ?DUP IF MSG: "ошибка отправки: %0 esPICK%" THEN
      ELSE
         \ заголовок темы не изменился:
         \ MSG: "Без изменений"
      THEN
   ;RE-ALL
ELSE
   2DROP
   \ что-то не получилось скачать
   16 S" checking_for_new_porn" DROP S" Ошибка загрузки страницы" DROP 0 MessageBoxA DROP
THEN
)#
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Почему происходит самопроизвольный повторный запуск Крон

Postby Morituruz » Thu, 03 May 2012, 20:22

VoidVolker wrote:Moriturus, лол, спалился :lol:
[/code]

Да нет, я для шутки так сообщение обозвал.
На самом деле, если вы приглядитесь, то после
Code: Select all
2DUP zhtml ZPLACE

содержимое z строки нигде собственно и не используется.
Но задача всё равно устарела, HTTP-GET жуткий тормоз.
User avatar
Morituruz
 
Posts: 725
Joined: Sun, 14 Oct 2007, 01:51

Re: Почему происходит самопроизвольный повторный запуск Крон

Postby Morituruz » Thu, 03 May 2012, 20:30

Собственно вот:
Code: Select all
#( get_updates
\ 2:51 12.04.2012
NoLog
Time: ? */2 * * * *
SingleInstance
Rule: ONLINE? ;
VARIABLE found?
0 VALUE zhtml
CREATE brwsr 256 ALLOT
CREATE found_string 256 ALLOT
\ 300 кБ на страничку должно хватить:
\ 300000 ALLOCATE THROW TO zhtml
STRING-LIST: gup

: SITEONLYNAME 2DUP
" /[\w0-9\-]+\.\w+(\/)?=/i" RE-MATCH
IF
   2DROP
   $0
ELSE
THEN
;
: default? " default value" COMPARE 0= ;

: iUrl " url" INI-GET-VALUE ;
: iRegExp " re" INI-GET-VALUE ;
: (iGroup) " gr" INI-GET-VALUE 2DUP default?
IF
   2DROP
   $0
ELSE
   EVALUATE
THEN
;

: iGroup
\ получаем параметр с кодировкой, если есть:
S" ch" INI-GET-VALUE
0 CASE
2 PICK 2 PICK S" utf-8" ICOMPARE OF
   (iGroup) UTF8>UNICODE UNICODE>S
ENDOF
2 PICK 2 PICK S" koi8-r" ICOMPARE OF
   (iGroup) KOI8>UNICODE UNICODE>S
ENDOF
0 OF
   (iGroup)
ENDOF
ENDCASE
2SWAP
2DROP
;
: iText " text" INI-GET-VALUE ;
: iNotRequired " nr" INI-GET-VALUE ;
: iDisabled " dis" INI-GET-VALUE ;
: iCharset " ch" INI-GET-VALUE 2DUP default?
IF
   2DROP
   0
ELSE
   S>NUM
THEN
;
: curl_out \ считывание того, что скачалось курлой
" .\curl\for_nncron" FILE
;
: curl ( a u -- ? ) \ скачивание url кюрлой. Возвращает код возврата самой кюрлы.
StartIn: ".\curl"
SWHide
START-APPW: .\curl\curl.exe -o "for_nncron" "%1 esPICKS%"
ExitCodeProc
;
Action:

\ " get_updates" CRON-LOG
\ путь до браузера:
" c:\Program Files (x86)\Opera\opera.exe" brwsr PLACE

\ ищем секции в ini-файле и заносим их названия в список:
" .\check.ini" FILE " /(\r\n\[)?#3\w+(\]\r\n)?=/i" RE-ALL
   $0 gup!
;RE-ALL

" .\check.ini" INI-FILENAME
gup(
   \ определяем раздел ини-файла:
   NODE@ INI-SECTION
   \ нужно ли проверять этот раздел?
   iDisabled default?
   IF
      \ проверка на наличие необходимых параметров:
      iUrl default? NOT
      iRegExp default? NOT
      AND
      IF
         \ скачиваем кюрлой
         iUrl curl 0=
         IF
            \ если всё считалось нормально, то сбрасываем флаг "совпадение найдено?":
            found? OFF
            \ и ищем в том, что скачалось, то, что нам надо:
            curl_out iRegExp RE-ALL
               \ включаем флаг, что на страничке это есть:
               found? ON
               iGroup found_string PLACE
               \ сравниваем найденное (если нашлось конечно) с сохранённой строчкой
               \ проверяется указанная группа
               found_string COUNT iText COMPARE 0<>
               IF
                  \ если не совпадает, спрашиваем:
                  4164 NODE@ DROP " %iUrl%|n|nБыло:|n%iText%|nСтало:|n%found_string COUNT%|n|nСохранить?" DROP 0 MessageBoxA 6 =
                  IF
                     \ если нажимаем да, то новый текст сохраняем:
                     " text" found_string COUNT INI-SET-VALUE
                     4164 NODE@ DROP " %iUrl%|nОткрыть?" DROP 0 MessageBoxA 6 =
                     IF
                        StartIn: "%brwsr COUNT ONLYDIR%"
                        " %brwsr COUNT% %iUrl%" START-APP
                     THEN
                  THEN
               ELSE
                  \ искомый текст не изменился
                  \ MSG: "Без изменений"
               THEN
            ;RE-ALL
            found? @ NOT
            \ и должно ли там вообще находиться что-то:
            iNotRequired default?
            ONLINE?
            AND
            AND
            IF
               \ значит на скачанной страничке вообще ничего не нашлось, а должно бы
               4096 16 4 + + NODE@ DROP " Вот здесь:|n%iUrl%|nвообще ничего не нашлось. Открыть?" DROP 0 MessageBoxA 6 =
               IF
                  \ открываем адрес
                  StartIn: "%brwsr COUNT ONLYDIR%"
                  " %brwsr COUNT% %iUrl%" START-APP
               THEN
            THEN
         ELSE
\            2DROP
            ONLINE?
            IF
               \ что-то не получилось скачать
               262144 16 + NODE@ DROP " Ошибка загрузки страницы:|n%iUrl%%crlf%ExitCode: %ExitCodeProc N>S%" DROP 0 MessageBoxA DROP
            THEN
         THEN
      ELSE
         \ не все параметры в секции указаны
         48 NODE@ DROP " В разделе|n%NODE@%|nотсутствуют необходимые параметры." DROP 0 MessageBoxA DROP
      THEN
      \ MSG: "end"
   THEN
)gup
\ " get_updates finish" CRON-LOG
\ убираем за собой:
gup LIST-FREE
)#


Для работы нужно, чтобы в каталоге nncron в папке curl лежал curl.exe
Скачивать тут: http://curl.haxx.se/download.html

Какие url и на что проверять берём из ini файла check.ini, который должен быть в каталоге nncron.
Вот пример с описанием параметров:
Code: Select all
; Обязательные параметры:
; url — скачиваемая страничка
; re — регулярное выражение, с помощью которого ищем.
; Необязательные параметры:
; dis — вкл/выкл для данной секции. Если хотим пропускать эту секцию, параметр должен быть.
; gr — какая группа из регулярного выражения отслеживается (от $1 до $15). Если не параметр отсутствует, отслеживается $0.
; text — сохранённый результат последнего поиска. Сам заполнится при первом поиске.
; nr — обязательно ли на странице должно что-то находиться. Если параметр есть в секции, то регулярное выражение не обязано что-то находить.
; ch — кодировка. Если параметр не указан, то перекодировка не требуется (т.е. строка из кода странички в 1251). 1 — UTF-8, 2 — KOI8-R

[South_park]
re=/(4017428\x22\>)?#9.+(<\/a><\/h1>)?=/i
url=http://rutracker.org/forum/viewtopic.php?t=4017428
text=Южный Парк / South Park / Сезон: 16 / Серии: 7 из 14 (Трей Паркер, Мэтт Стоун / Trey Parker, Matt Stone) [2012, мультфильм, комедия, WEB-DL 720p] VO (Nice-Media)<wbr> + ENG



Правда в данном виде задача требует плагина Lists (а к нему и плагин Autostrings), но оно того стоит.
Во сколько она сложней первоначального варианта, во столько же и лучше.
В принципе, если убрать zhtml из вашей текущей задачи, ошибки должны прекратиться, так что решайте сами
Last edited by Morituruz on Thu, 03 May 2012, 21:56, edited 2 times in total.
User avatar
Morituruz
 
Posts: 725
Joined: Sun, 14 Oct 2007, 01:51

Re: Почему происходит самопроизвольный повторный запуск Крон

Postby VoidVolker » Thu, 03 May 2012, 21:53

Moriturus wrote:HTTP-GET жуткий тормоз.

Использую wget. Тут даже на форуме где-то к нему обертка была. Курл тоже как-то смотрел - и пришел к выводу, что там слишком сложно все. Wget проще )
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Почему происходит самопроизвольный повторный запуск Крон

Postby Morituruz » Thu, 03 May 2012, 22:08

Вот тут краткое сравнение, но по делу:
http://daniel.haxx.se/docs/curl-vs-wget.html
Понятно, что для моей примитивной задачи разницы нет.

Насколько я понял, кюрл основан на библиотеке, т.е. оттуда теоретически можно натаскать функций прямо в крон с помощью WINAPI?
Наверное это они:
Image
User avatar
Morituruz
 
Posts: 725
Joined: Sun, 14 Oct 2007, 01:51

Re: Почему происходит самопроизвольный повторный запуск Крон

Postby I1iF » Fri, 04 May 2012, 07:21

При добавлении задачи, ошибка в строке:
Code: Select all
STRING-LIST: gup
User avatar
I1iF
 
Posts: 34
Joined: Fri, 25 Jan 2008, 12:32

Re: Почему происходит самопроизвольный повторный запуск Крон

Postby Morituruz » Fri, 04 May 2012, 08:17

Для работы задачи нужен вот этот плагин (а точнее два):
viewtopic.php?f=5&t=11161
и вот этот:
http://www.nncron.ru/download/plugins/ini.spf
User avatar
Morituruz
 
Posts: 725
Joined: Sun, 14 Oct 2007, 01:51

Re: Почему происходит самопроизвольный повторный запуск Крон

Postby VoidVolker » Fri, 04 May 2012, 15:51

Moriturus wrote:Насколько я понял, кюрл основан на библиотеке, т.е. оттуда теоретически можно натаскать функций прямо в крон с помощью WINAPI?

Вообще, curl.exe как раз и основана на библиотеке libcurl. И конечно ничто не мешает в кроне использовать именно библиотеку libcurl.dll.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Почему происходит самопроизвольный повторный запуск Крон

Postby I1iF » Sat, 05 May 2012, 16:26

Что-то у меня с этой задачей ничего не происходит.
В check.ini секция text не заполняется, никакие сообщения не появляются, в логе: 19:06:12 2000 TASK: get_updates.

В каталоге nncron в папке curl лежит curl.exe.

В каталоге nncron лежит check.ini:
[Главная_догога_R]
re=/(4017428\x22\>)?#9.+(<\/a><\/h1>)?=/i
url=http://rutracker.org/forum/viewtopic.php?t=3900751
text=

Плагины Autostrings.spf, ini.spf, lists.spf установлены.
User avatar
I1iF
 
Posts: 34
Joined: Fri, 25 Jan 2008, 12:32

Next

Return to nnCron forum (Russian)

Who is online

Users browsing this forum: Dimsok and 1 guest