Срабатывание при появлении файла с определенным содержимым

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

Re: Срабатывание при появлении файла с определенным содержимым

Postby VoidVolker » Fri, 10 Jul 2009, 10:23

zed29 wrote:При RE-MATCH: "C:\logs\%YYYY%-%MM%-%DD%-stat.log" Задача_Имя задачи: Внутрення ошибка. Error # -1073741819
Ниже привожу подкорректированную задачу.

Таки хелп открой и прочитай более внимательно и вдумчиво, ибо RE-MATCH требует две строки - текст и регексп. А в данном случае он получает именно строку C:\kiosk\logs\%YYYY%-%MM%-%DD%-stat.log, а вторую строку он не может найти - её же просто нет, вот и вываливается с ошибкой. Так же FOUND-LINE вывалится с ошибкой - ибо оно возвращает строку только внутри цикла READ-BY-LINE и нигде более. Затем еще SEARCH не обнаружит на стеке строку, в которой ему надо искать, а когда не найдет - будет еще и мусор на стеке.

Code: Select all
#( Задача_1115100709
AsLoggedUser
WatchDir: "C:\kiosk\logs" WATCH-CHANGE-LAST-WRITE
Action:
 S" C:\kiosk\logs\" YYYY S+ S" -" S+ MM  S+ S" -" S+ DD  S+ S" -stat.log" S+ FILE
 S" /.*принтере заканчивается бумага$/"
RE-MATCH
  IF
    AsService
    S" C:\DOG\schtask\utils\devcon.cmd" START-APP
  THEN
)#
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Срабатывание при появлении файла с определенным содержимым

Postby zed29 » Fri, 10 Jul 2009, 10:32

Dark_Jones wrote:Оп-па... Неожиданный ход мысли... :)
Почитай про использование RE-MATCH. C регэкспами не очень дружу, но когда что-то надо, то методом проб и ошибок получаю нужный результат.

Где в хелпе? Искал что то не разобрался. Я не программист, только учусь :)
User avatar
zed29
 
Posts: 55
Joined: Sat, 28 Mar 2009, 17:44
Location: Украина / Киев

Re: Срабатывание при появлении файла с определенным содержимым

Postby VoidVolker » Fri, 10 Jul 2009, 10:38

zed29 wrote:Где в хелпе? Искал что то не разобрался. Я не программист, только учусь

Целиком - от начала и до самого конца. И далее, если интересует и дальше заниматься - внимательно изучить книги Броуди Hачальный куpс пpогpаммиpования на языке Фоpт и Thinking Forth "Способ мышления - Форт". Затем книги Баранова и Ноздрунова, ну а потом уже по усмотрению http://www.forth.org.ru/. Если интересует - могу посоветовать и некоторые другие Форт-системы для изучения.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Срабатывание при появлении файла с определенным содержимым

Postby zed29 » Fri, 10 Jul 2009, 10:41

Скрипт такой модернизированный получился, но при запуске ничего не происходит :cry:

Code: Select all
#( Задача_1115100709
AsLoggedUser
WatchDir: "C:\kiosk\logs" WATCH-CHANGE-LAST-WRITE
Action:
 S" C:\kiosk\logs\" YYYY S+ S" -" S+ MM  S+ S" -" S+ DD  S+ S" -stat.log" S+ FILE
 S" /.*принтере заканчивается бумага$/"
RE-MATCH
  IF
    AsService
    S" C:\DOG\schtask\utils\devcon.cmd" START-APP
  THEN
)#
[/quote]
User avatar
zed29
 
Posts: 55
Joined: Sat, 28 Mar 2009, 17:44
Location: Украина / Киев

Re: Срабатывание при появлении файла с определенным содержимым

Postby VoidVolker » Fri, 10 Jul 2009, 10:46

А в конце файла в последней строке есть такая строка? Потому что скрипт будет срабатывать только на последнюю строчку.
Code: Select all
#( Задача_1144100709
AsLoggedUser
WatchDir: "C:\kiosk\logs" WATCH-CHANGE-LAST-WRITE
Action:
S" C:\kiosk\logs\" YYYY S+ S" -" S+ MM  S+ S" -" S+ DD  S+ S" -stat.log" S+ FILE
S" /.*принтере заканчивается бумага.*$/"
RE-MATCH
  IF
    AsService
    S" C:\DOG\schtask\utils\devcon.cmd" START-APP
  THEN
)#
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Срабатывание при появлении файла с определенным содержимым

Postby zed29 » Fri, 10 Jul 2009, 13:36

VoidVolker wrote:А в конце файла в последней строке есть такая строка? Потому что скрипт будет срабатывать только на последнюю строчку.
Code: Select all
#( Задача_1144100709
AsLoggedUser
WatchDir: "C:\kiosk\logs" WATCH-CHANGE-LAST-WRITE
Action:
S" C:\kiosk\logs\" YYYY S+ S" -" S+ MM  S+ S" -" S+ DD  S+ S" -stat.log" S+ FILE
S" /.*принтере заканчивается бумага.*$/"
RE-MATCH
  IF
    AsService
    S" C:\DOG\schtask\utils\devcon.cmd" START-APP
  THEN
)#

В конце лога?
Нет. В логе эта строка появляется через определенное время и этих строк много. И моя задача уловить первую такую строку, потом замутить так чтобы система мне дала об это знать что там закончилась бумага и ее нужно заменить.
User avatar
zed29
 
Posts: 55
Joined: Sat, 28 Mar 2009, 17:44
Location: Украина / Киев

Re: Срабатывание при появлении файла с определенным содержимым

Postby Dark_Jones » Fri, 10 Jul 2009, 14:18

Тогда просто убери доллар $ в конце строки S" /.*принтере заканчивается бумага.*$/".

Но здесь появится проблема: при первом сообщении о бумаге всё будет хорошо. А вот потом при любом изменении лога в течение суток тебе будут напоминать о бумаге. Чтобы такого не происходило придётся переименовывать лог.
Dark_Jones
 
Posts: 414
Joined: Thu, 09 Nov 2006, 00:43
Location: Russia, S.Peterburg

Re: Срабатывание при появлении файла с определенным содержимым

Postby VoidVolker » Fri, 10 Jul 2009, 15:32

Да, как нибудь так:
Code: Select all
#( Задача_1621100709
AsLoggedUser
WatchDir: "C:\kiosk\logs" WATCH-CHANGE-LAST-WRITE

: YYYY-MM-DD   \ ( -- a u )
  Day@ S>D <# # # [CHAR] - HOLD 2DROP
  Mon@ S>D # # [CHAR] - HOLD 2DROP
  Year@ S>D # # # # #>
;

: сегодняшний-лог    S" C:\kiosk\logs\" YYYY-MM-DD S+ S" -stat.log" S+ ;

Action:
 сегодняшний-лог FILE
 S" /.*принтере заканчивается бумага.*/"
RE-MATCH
  IF
    AsService
    S" C:\DOG\schtask\utils\devcon.cmd" START-APP
    S" "
    сегодняшний-лог
     2DUP FILE  S" C:\kiosk\logs\" YYYY-MM-DD S+ S" -stat-real.log" S+ FAPPEND
    FWRITE
  THEN
)#

При появлении текста ошибки в логе данные из лога сохраняется в другой файл, а оригинальный лог очищается.
Last edited by VoidVolker on Fri, 10 Jul 2009, 16:38, edited 1 time in total.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Срабатывание при появлении файла с определенным содержимым

Postby Dark_Jones » Fri, 10 Jul 2009, 16:15

А зачем YYYY-MM-DD? Просто интересно - для повышения самообразованности.

PS: Доллар-то убрать надо. Или нет?
Dark_Jones
 
Posts: 414
Joined: Thu, 09 Nov 2006, 00:43
Location: Russia, S.Peterburg

Re: Срабатывание при появлении файла с определенным содержимым

Postby VoidVolker » Fri, 10 Jul 2009, 16:38

Dark_Jones wrote:А зачем YYYY-MM-DD? Просто интересно - для повышения самообразованности.

Ну во-первых - принцип факторизации - слово применяется более одного раза, а во-вторых - так ведь удобнее и проще. :)
Dark_Jones wrote:PS: Доллар-то убрать надо. Или нет?

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

Re: Срабатывание при появлении файла с определенным содержимым

Postby AlikasS » Fri, 10 Jul 2009, 16:43

у меня почти аналогичная задача,
крон следит за своим логом (просто каждую минуту смотрит его, это условие легко меняется) и перезапускается при определенных условиях (необъяснимые ошибки при нормально работающих задачах, появление которых непредсказуемо),
ну и лог фиксирует на момент ошибки
Code: Select all
#( CLASSIC-TASK-#-restart_nncron_по_ошибке
\ NoActive
SingleInstance
NoLog
: rest_body_des
SWHide
StartIn: "C:\Program Files\nnCron"
START-APP: %COMSPEC% /c net stop nncron && \
start/wait nncron.exe 60000 PAUSE BYE && \
net start nncron
;
Action:
\ 1 ошибка
S" log\%MM%%DD%_cron.log" EVAL-SUBST FILE S" Не могу получить токен текущего пользователя." SEARCH
IF
2DROP
S" %crlf%------- рестарт nncron по ошибке токена%crlf%" EVAL-SUBST CRON-LOG
500 PAUSE
S" log\%MM%%DD%_cron.log" EVAL-SUBST S" log\~%MM%%DD%_%hh%_%mm%cron.log" EVAL-SUBST FRENAME
S" " S" log\%MM%%DD%_cron.log" EVAL-SUBST FWRITE
rest_body_des
ELSE
2DROP
THEN

\ 2 ошибка
S" log\%MM%%DD%_cron.log" EVAL-SUBST FILE S" Неверный дескриптор" SEARCH
IF
2DROP
S" %crlf%------- рестарт nncron по ошибке дескриптора%crlf%" EVAL-SUBST CRON-LOG
500 PAUSE
S" log\%MM%%DD%_cron.log" EVAL-SUBST S" log\~%MM%%DD%_%hh%_%mm%cron.log" EVAL-SUBST FRENAME
S" " S" log\%MM%%DD%_cron.log" EVAL-SUBST FWRITE
rest_body_des
ELSE
2DROP
THEN
)#

может пригодится
User avatar
AlikasS
 
Posts: 1434
Joined: Wed, 28 Jun 2006, 05:39
Location: Khabarovsk

Re: Срабатывание при появлении файла с определенным содержимым

Postby zed29 » Tue, 14 Jul 2009, 07:25

Спасибо, я попробую потом отпишусь. Щас работой привалило :Hangman:
User avatar
zed29
 
Posts: 55
Joined: Sat, 28 Mar 2009, 17:44
Location: Украина / Киев

Previous

Return to nnCron forum (Russian)

Who is online

Users browsing this forum: Bing [Bot], Google [Bot] and 3 guests