Ru-Board.club
← Вернуться в раздел «Программы»

» nnCron

Автор: olegupb
Дата сообщения: 11.07.2008 10:41
DJ makrus
хм..
добавил твою задачку на перезапуск nncron в случае ошибки.
Выдает, что в 76 строке ошибка

Код: start/wait nncron.exe 5000 PAUSE BYE && \
Автор: DJ makrus
Дата сообщения: 12.07.2008 17:27
olegupb
Цитата:
Выдает, что в 76 строке ошибка...
По моим прикидкам это должна быть строка №72... в этом файле еще что-то есть кроме задачи ERROR_PASS_#_87 ? Учитывая и последующие описанные тобой ошибки "на ровном месте" лучше если ты выложешь все содержимое кронтаба err.tab, естественно желательно ничего в нем не менять
Цитата:
перенабрал ее. Вернее скопировал из справки целую строку.
и теперь выдает ошибку...
в строке 77
а если попробовать и 77-ую строку из справки вставить?
Автор: olegupb
Дата сообщения: 14.07.2008 09:21
DJ makrus

Цитата:
а если попробовать и 77-ую строку из справки вставить?

аналогично
перенабор строки тоже ничего не меняет

Цитата:
лучше если ты выложешь все содержимое кронтаба err.tab, естественно желательно ничего в нем не менять

[more=err.tab]#CRONTAB FILE
# Classic crontab format:
# Minutes Hours Days Months WeekDays Years Command

#( ERROR_PASS_#_87
NoActive
: cron_dir ( -- a u ) tm.exe ONLYDIR ;
: StrNextAdr ( a u -- a+1 u-1 ) 1- SWAP 1+ SWAP ;
: StrPrevAdr ( a u -- a-1 u+1 ) 1+ SWAP 1- SWAP ;
: 2LastInStr { a1 u1 a2 u2 \ aprev uprev aprev2 uprev2 -- aprev uprev a3 u3 flag }
\ a1u1 - исходный текст, a2u2 - искомая строка
\ flag = 0 если искомая строка не найдена,
\ если flag=1, a3u3 - содержит текст от последнего вхождения искомой строки и до конца, aprev_uprev - содержит текст от предпоследнего вхождения
\ искомой строки и до конца, если вхождение только одно, то содержит пустую строку;
\ если flag=0, a3u3 - содержит исходный текст, aprev_uprev - пустую строку
u1 u2 < IF ." Исходный текст меньше строки поиска!" THEN
S" " TO uprev TO aprev
a1 u1
BEGIN
a2 u2 SEARCH
WHILE
uprev2 TO uprev aprev2 TO aprev
2DUP TO uprev2 TO aprev2
StrNextAdr
REPEAT
aprev uprev 2SWAP DUP u1 =
IF FALSE ELSE StrPrevAdr TRUE THEN
;

: GetLastLine ( a u -- a1 u1 flag )
2DUP 2>R crlf 2LastInStr
IF
2DUP NIP 2 =
IF
2OVER NIP 0=
IF
2DROP 2R>
ELSE
2R> 2DROP
2SWAP
StrNextAdr StrNextAdr
THEN
2- 2SWAP
ELSE
2R> 2DROP
StrNextAdr StrNextAdr 2SWAP
THEN
TRUE
ELSE
2R> 2DROP 2SWAP FALSE
THEN
NIP NIP
;

: WaitAccessFile { a u ms -- }
a u FILE-ATIME
BEGIN
ms PAUSE 2DUP
a u FILE-ATIME D<
IF 2DROP TRUE ELSE FALSE THEN
UNTIL
;
Time: START-TIME
Action:
BEGIN
cron.log 2DUP 10000 WaitAccessFile \ в цикле, с периодичностью 10000 мс, ожидаем когда лог nnCron'а будет изменен
2DUP 3 - S" bak" S+ 2DUP 2>R FCOPY 2R> \ делаем копию файла
2DUP FILE 2SWAP FDELETE \ прочитываем ее в память, а копию удаляем
GetLastLine \ получаем последнюю строчку из файла
IF
S" /.*ERROR PASS # 87/" RE-MATCH \ проверяем - содержит ли она сообщение об ошибке
IF
S" Перезагружаемся из-за ошибки: ERROR PASS # 87" crlf S+ CRON-LOG \ выводим в лог причину перезагрузки и перезагружаем nnCron
StartIn: "%cron_dir%"
START-APP: %COMSPEC% /c net stop nncron && \
start/wait nncron.exe 5000 PAUSE BYE && \
net start nncron
THEN
THEN
AGAIN
)#[/more]
Автор: DJ makrus
Дата сообщения: 14.07.2008 11:05
olegupb
1. Разночтения в нумерации строк из-за первых 4-х строк, для кронтабов они не обязательны и я не подумал что ты их добавишь , их оставляй как есть, будем учитывать их наличие.
2. Строку №7 измени вместо:
: cron_dir ( -- a u ) tm.exe ONLYDIR ;
сделай:
: cron_dir ( -- a u ) S" d:\util\nnCron" ;
проблема наверняка не в этом, но так, на всякий случай...
3. Для полноты картины хорошо бы еще глянуть на nncron.ini (если там какие пароли забиты - их измени, если хочешь можешь в ПМ) и после того как nnCron ругнется на ошибку в строке №77 посмотри еще и nncron.out, если там более 4-х строк, то тоже выложи посмотреть
4. Добавь в конец любого кронтаба [more=задачку из справки]#( test_restart
NoActive
Action:
SWHide
StartIn: "d:\util\nnCron"
START-APP: %COMSPEC% /c net stop nncron && \
start/wait nncron.exe 5000 PAUSE BYE && \
net start nncron
)#
[/more] (я изменил только каталог запуска и убрал время запуска), сохрани, после перечитывания nnCron ругается на соотвествующую строчку этой задачки? По идее должен, если да, то видимо что-то в винде у тебя не стандартно (в плане запуска служб, а мож и еще чего), в любом случае опиши что и как будем дальше разбираться...
Автор: doc58_81oB0t
Дата сообщения: 14.07.2008 12:32
привет

хотелось бы сделать с помощью nnCron бэкап автоматом папки с файлами. раз в 15 дней, добавлять в папку I:\backup имякопируемойпапки_дата

делал уже может кто подобное?
Автор: unreal666
Дата сообщения: 14.07.2008 13:10
doc58_81oB0t
А чем бэкапить/архивировать будешь? (какой архиватор и т.п.)
Автор: olegupb
Дата сообщения: 14.07.2008 13:44
DJ makrus

Цитата:
из-за первых 4-х строк, для кронтабов они не обязательны и я не подумал что ты их добавишь

я в курсе, что не обязательны. Оставил чтоб другие видели что это тоже кронтаб

Цитата:
Для полноты картины хорошо бы еще глянуть на nncron.ini

[more=nncron.ini]\ This file contains nnCron settings.
\ The keywords are described in nnCron documentation.
\ All keywords are case sensitive.
\ Don't forget to place a blank space after each keyword.
\ Restart nnCron after editing this file to apply your changes.

ShowErrorMsg ON
Crontab: "nncron.tab"
Crontab: "err.tab"
Editor: "default"
Language: Russian
Cronlog: "log\%MM%%DD%cron.log"
LogTimeFormat: "%hh%:%mm%:%ss% %ThreadId%"
YearField ON
CompleteTaskTimeout: 2000
QueryStartTimeout: 30
QueryStartAnswer: Yes
DefaultOpenMode: ShowNormal
DefaultPriority: NormalPriority
DefaultLogonType: LogonInteractive
SysTrayIcon ON
IconForAdminsOnly OFF
MonitorResponseTime: 100
BackupPath: "backup"
WatchWinCreateDelay: 100
WatchProcDelay: 1000
Console OFF
ItemExit ON
ItemOptions ON
ItemConsole ON
ItemReload ON
ItemSuspend ON
MenuHotKey: ""
Guard ON
DialOnce ON
RunAsDefaultUser OFF
DefaultUser: ""
DefaultPassword: ""
DefaultDomain: ""
DefaultLoadProfile OFF
GUIAsUser OFF
GUIUser: ""
GUIPassword: ""
GUIDomain: ""
GUILoadProfile ON
SyntaxRestriction OFF
HelpFile: "doc\help.chm"
RemConsole ON
RemConsolePort: 2002
RemAllowed: 127.0.0.1
RemDisallowed: x.x.x.x
Log2StdOut OFF
DefaultRunMissedTime: 15
ReloadImmediately ON
TrayIconDoubleClick: options
TrayIconRightButton: menu
TrayIconBalloonClick: NOOP
PerfMonitor OFF
MaxClipboardSize: 10240

INCLUDE "plugins\tools.spf"
INCLUDE "plugins\win2tray.spf"
INCLUDE "plugins\windows.spf"
INCLUDE "plugins\timesync.spf"
INCLUDE "plugins\wakeup.spf"
INCLUDE "plugins\time.spf"
INCLUDE "plugins\system.spf"
INCLUDE "plugins\ras.spf"
INCLUDE "plugins\http.spf"
INCLUDE "plugins\procwin.spf"
INCLUDE "plugins\winlirc.spf"

: CRONTAB-ERROR 10 1 DO 100 I 100 * BEEP LOOP ;
: REMINDER-SOUND 500 500 BEEP ;
[/more]

Цитата:
и после того как nnCron ругнется на ошибку в строке №77 посмотри еще и nncron.out

ничего кроме 4 строк

Цитата:
Добавь в конец любого кронтаба задачку из справки

добавил в err.tab

Цитата:
сохрани, после перечитывания nnCron ругается на соотвествующую строчку этой задачки?

да

Цитата:
если да, то видимо что-то в винде у тебя не стандартно (в плане запуска служб, а мож и еще чего)

проверил на 3 виндах
2 обычные sp2 + апдейты
и еще одна сборка от samlab. Ее специально установил на виртуальную машину чтоб попробовать.
Везде nncron ругается на эти строки.

Попробуй у себя с поста скопировать задачу и вставить в nncron. Может где лишние пробелы копируются, хотя я старался все удалить

Добавлено:
точно лишние пробелы
сейчас подчистил еще раз всю задачу на предмет пробелов в конце и nnCron съел кронтаб
вот так вот
но задачка отказалась выполнятся
вставил в текущий лог строку

Код: 17:42:55 1352 ERROR PASS # 87
Автор: DJ makrus
Дата сообщения: 14.07.2008 14:51
olegupb
Цитата:
Попробуй у себя с поста скопировать задачу и вставить в nncron. Может где лишние пробелы копируются, хотя я старался все удалить
...
точно лишние пробелы
сейчас подчистил еще раз всю задачу на предмет пробелов в конце и nnCron съел кронтаб
Я задачу проверял, в том числе и из своего же поста, после твоего сообщения об ошибках..., настоящие пробелы не могут быть причиной сколько бы ты их "лишних" не навставлял, тут дело видимо в другом - каким редактором для правки кронтабов пользуешься? Попробуй, интереса ради, снова с форума скопировать задачку в какой-нибудь файл через свой редактор и сохрани и глянь hex-значения тех "пробелов" которые вызывали ошибку
Цитата:
но задачка отказалась выполнятся
вставил в текущий лог строку...
и в логе ничего подозрительного? В строке №66 исправь вместо:
cron.log 2DUP 10000 WaitAccessFile \ в цикле, с периодичностью 10000 мс, ожидаем когда лог nnCron'а будет изменен
на
cron_dir S" \log\" S+ MM S+ DD S+ S" cron.log" S+ 2DUP 10000 WaitAccessFile \ в цикле, с периодичностью 10000 мс, ожидаем когда лог nnCron'а будет изменен
помогло?
Автор: olegupb
Дата сообщения: 14.07.2008 15:51
DJ makrus

Цитата:
настоящие пробелы не могут быть причиной



Цитата:
Попробуй, интереса ради, снова с форума скопировать задачку в какой-нибудь файл через свой редактор и сохрани

FAR и блокнот(стандартный, без наворотов)

Цитата:
и глянь hex-значения тех "пробелов" которые вызывали ошибку

hex-значение "20", тоесть пробел
http://ifolder.ru/7338826
в архиве nnCron.rar два файла
err.tab - нормальный без пробелов
err.tab.1 - плохой. с пробелами.
пробелов всего 2
попробуй у себя подключить эти кронтабы.


Добавлено:
DJ makrus

Цитата:
В строке №66 исправь вместо:
cron.log 2DUP 10000 WaitAccessFile \ в цикле, с периодичностью 10000 мс, ожидаем когда лог nnCron'а будет изменен
на
cron_dir S" \log\" S+ MM S+ DD S+ S" cron.log" S+ 2DUP 10000 WaitAccessFile \ в цикле, с периодичностью 10000 мс, ожидаем когда лог nnCron'а будет изменен

не помогло
в каком логе он ищет строку?

Код: 17:42:55 1352 ERROR PASS # 87
Автор: DJ makrus
Дата сообщения: 15.07.2008 07:13
olegupb
Цитата:
...попробуй у себя подключить эти кронтабы.
Ага, ты прав nnCron начинает ругаться , но это исключение из правила - "лишних пробелов быть не может" и дело тут в следующем: вот эти две строки:
START-APP: %COMSPEC% /c net stop nncron && \
start/wait nncron.exe 5000 PAUSE BYE && \

не должны содержать пробелов после слешей и перед символами перевода строки, т.к. если пробела нет, то слеш обозначает что следующую строку надо "рассматривать" как продолжение текущей со слешем на конце, а в данном случае (запуск приложения) в этой строке после указания приложения идут параметры передаваемые ему, и эти параметры nnCron, естественно, не "парсит" пытаясь найти свои команды, а просто передает запускаемому приложению,
если же есть пробел, то слеш является словом обозначающим начало комментария до конца строки, и следующая строка рассматривается уже не как продолжение передоваемых параметров, а как строка в которой должны содержаться последующие команды nnCron'а для выполнения, а поскольку эти команды он не знает, то и начинает ругаться на ошибку синтаксиса...
Я с этим не сталкивался потому что у меня в редакторе настроено при сохранении файла удалять пробелы перед символами перевода строк, это и вообще полезно и при копировании с форума - выручает. Помимо удаления пробелов после слешей и перед переводами строк, можно в этих двух строках удалить и сами слеши с переводами строк, разместив, таким образом, все команды передоваемые командному интерпретатору винды в одной строке...
В общем - спасибо тебе что указал на это исключение
Цитата:
не помогло
в каком логе он ищет строку?
Он ищет в своем собственном логе, у меня он один и тот же всегда, а у тебя каждый день новый, т.е. сегодня он будет искать в файле: d:\util\nnCron\log\0715cron.log..., постой, а ты строку №6 в которой содержится NoActive закомментировал? Если нет, то задача сама и не сработает, а когда ты ее вручную запускаешь, то к моменту проверкой задачей лога, там будет последней строкой - строка с отчетом об запуске этой задачи! Если не закомментирована, то закомментируй и попробуй еще раз добавить "сигнальную" строку в лог nnCron'а, и в любом случае что бы видеть где ищется "сигнальная" строка - строку №66:
cron_dir S" \log\" S+ MM S+ DD S+ S" cron.log" S+ 2DUP 10000 WaitAccessFile \ в цикле, с периодичностью 10000 мс, ожидаем когда лог nnCron'а будет изменен
замени на три строчки:
cron_dir S" \log\" S+ MM S+ DD S+ S" cron.log" S+
2DUP MsgBox
2DUP 10000 WaitAccessFile \ в цикле, с периодичностью 10000 мс, ожидаем когда лог nnCron'а будет изменен

В момент выполнения этого кода появится окошко содержащее полный путь файла в котором ищется сигнальная строка - проверь совпадает ли она с логом nnCron'а..., пока ты не закроешь окошко - задачка будет приостановлена, что "не есть хорошо", поэтому убедившись в правильности имени проверяемого файла - заккоментируй строку №67 содержащую:
2DUP MsgBox
а это помогло?
Автор: lucky_Luk
Дата сообщения: 20.07.2008 22:38
Есть 2 переменных типа VALUE. Нужно достать значение одной из них и сделать его значением второй переменной. Как это сделать?
Строка вида

Value1 Value2 TO

не годится, ругается на нее.
Автор: DJ makrus
Дата сообщения: 20.07.2008 23:34
lucky_Luk
Цитата:
не годится, ругается на нее.
Как мне подсказывает Help , он не должен ругаться на
Код: Value1 TO Value2
Автор: VitalySt
Дата сообщения: 24.07.2008 20:05
Подскажите, есть возможность запустить программу в Viste? Когда-то этот вопрос уже звучал на форуме и ответа я так и не нашел (может не там искал? ) В трей я его так и не смог запустить.
Автор: lucky_Luk
Дата сообщения: 26.07.2008 20:50
Есть вот-такой файл-флаг:
С:\folder\любое_число.flag
Т.е. в папке "folder" может быть файл 1.flag, 2.flag, 5.flag и т.п., но всегда такой файл только один. Различаются только имена, расширение всегда одинаковое.
Нужно чтобы в задаче nnCron обрабатывал этот файл - считывал его имя (т.е. определенный числовой номер) и заносил это имя в переменную типа VALUE (переменная уже объявлена в задаче, например пусть она называется file_number).
Как это сделать?
Автор: unreal666
Дата сообщения: 26.07.2008 23:09
lucky_Luk
Именно для твоего случая

Код: #( TEMP-TASK-1
NoActive
0 VALUE file_number
Action:
FOR-FILES
: "С:\folder\*.flag"
FOUND-FILENAME S>NUM TO file_number
;FOR-FILES

)#
Автор: Chern
Дата сообщения: 20.08.2008 14:11
Есть задача по горячей клавише открыть файл в редакторе и его конец добавить содержимое буфера обмена. Вроде все просто, написал код, а не работает. Во-первых, открытое окно не становится активным, а во-вторых, в него, естественно не передается нажатие клавиш. Что не так?

WatchHotKey: "^@{0x47}"
Action:
StartIn: "C:\Users\User\Documents"
ShowNormal NormalPriority
START-APP: C:\Users\User\Documents\Документ.rtf
WIN-ACTIVATE: "/.*WordPad/i"
SEND-KEYS: "^{0x23}"
SEND-KEYS: "+{0x2D}"
Автор: unreal666
Дата сообщения: 21.08.2008 00:53
Chern
Потому что ты пытаешься активировать окно, когда оно еще не появилось.
Надо создать цикл с задержкой на проверку присутствия этого окна и только после этого делать его активным и все остальное.
Автор: SIS33
Дата сообщения: 26.08.2008 08:28
Кто нибудь проповал написать синхронизировать FTP c локальным каталогом?
Автор: Nuke142
Дата сообщения: 10.09.2008 19:24
Как себя ведет пункт "выполнять просроченную задачу" ?
Как сделать чтобы, в случае если задача была пропущена (компьютер выключен), то при ближайшем включении компа (и входа в винду соответственно) запускалась пропущеная задача ?
Автор: DJ makrus
Дата сообщения: 11.09.2008 06:10
Nuke142
Цитата:
Как сделать чтобы, в случае если задача была пропущена (компьютер выключен), то при ближайшем включении компа (и входа в винду соответственно) запускалась пропущеная задача ?
Как раз и надо воспользоваться пунктом "Выполнять просроченную задачу"
Автор: Nuke142
Дата сообщения: 11.09.2008 09:01
DJ makrus, но там время нужно указать.. или если оставить поле пустым-срузу при загрузке компа задача выполнятьяс начнет ?
Автор: unreal666
Дата сообщения: 11.09.2008 11:47
Nuke142
При пустом поле просроченная задача запускатится вне зависимости от времени, на сколько она просрочена.
Если время указано, то просроченная задача запускатится только, нсли она просрочена не более указанного времени.
В обоих случаях просроченные задачи запускаются при первой возможности (т.е. при запуске nnCron'а и активности самого nnCron и задачи)
Автор: wyxa
Дата сообщения: 14.09.2008 14:57
Здравствуйте!
Помогите справиться со следующей задачей. Необходимо в определённом промежутке времени, случайно выбирая время, запустить приложение.
Например, мне нужно запустить приложение между 7-ю и 8-ю часами утра, но так, чтобы время запуска каждый день было разным.
Поскажите решение, пожалуйста.
Или хотябы подскажите на какие функции языка Форт нужно обратить внимание, чтобы я сам мог легко написать.
Заранее спасибо!
Автор: DJ makrus
Дата сообщения: 15.09.2008 05:50
wyxa
Цитата:
...нужно запустить приложение между 7-ю и 8-ю часами утра, но так, чтобы время запуска каждый день было разным
Попробуй так:
Код:
#( CLASSIC-TASK-#-RANDOM-start
SingleInstance
AsLoggedUser
Time: 0 7 * * * *
Action:
3600000 RANDOM PAUSE
START-APP: notepad.exe
)#
Автор: wyxa
Дата сообщения: 15.09.2008 10:20
DJ makrus
Всё работает! Спасибо большое!
Автор: Petro
Дата сообщения: 15.09.2008 17:26
Господа, как сделать повтор задачи через 10 секунд? и чтобы она повторялась, пока я не отменю задачу вручную?
Автор: unreal666
Дата сообщения: 16.09.2008 21:55

Цитата:
как сделать повтор задачи через 10 секунд?

через цикл

Цитата:
и чтобы она повторялась, пока я не отменю задачу вручную?

отменить задачу можно только через другую задачу:
Справка -> Дополнительная информация -> А знаете ли вы?.. -> ...как из одной задачи остановить выполнение другой задачи?
Автор: Suta
Дата сообщения: 17.09.2008 14:28
День добрый.
Вроде всё просто.

RunMissed
Time: * * 18 9 * 2008
Action:
FILE-COPY: "c:\root\1.txt" "c:\1.txt"

Но скрипт до конца правильно не работает. Почемуто запуск просроченных задач происходит только в девятом месяце. В десятом задача почему то не запускается. Что не правильно?
Автор: DJ makrus
Дата сообщения: 18.09.2008 05:51
Suta
Цитата:
Но скрипт до конца правильно не работает. Почемуто запуск просроченных задач происходит только в девятом месяце.
Ну скрипт-то, работает, пожалуй правильно, но видимо не так как ты хочешь А в десятом месяце задача не запустится потому что ты указал только девятый..., измени вторую строчку приведеннного тобою кода на:
Time: * * 18 9,10 * 2008
и она запустится и в десятом месяце восемнадцатого числа. Или тебе надо в десятом в любой день?
Автор: Suta
Дата сообщения: 18.09.2008 06:39
Да. Надо в десятом в любой день. Что делать.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354

Предыдущая тема: Autodesk AutoCAD


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.