Отладка программы (задачи кронтаба). Как?

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

Отладка программы (задачи кронтаба). Как?

Postby AleXH » Tue, 03 Sep 2013, 16:04

Есть ли возможность трассировки программы с одновременным просмотром стека? Есть ли какая либо среда или инструментарий, позволяющий это делать наглядно и удобно?

Например крон ругается на горбатый стек, как посмотреть его состояние перед исполнением некорректной команды?

1. Первая задача. каждые сутки раз в час в промежутке от 15:00 до 21:00 нужно получать время создания (изменения) файла (эксель прайс) на инет-сервере, если файл обновился, то скачать его и выдать сообщение-предложение открыть его, более в этот день сервер не опрашивать.

Пример 1.
Spoiler: show
Code: Select all
#( Example1
NoLog
AsLoggedUser
LoadProfile
Time: 0 15-21 * * * *
Action:
FILE-EXIST: "C:\Temp\3.up"
IF
FILE-WRITE-DATE: "C:\Temp\3.up"
ELSE
FILE-CREATE: "C:\Temp\3.up"
CUR-DATE
-1 DAY+
THEN
CUR-DATE
DATE- 0 <
IF
  S" C:\Temp\3.up" FILE
  S" http://...../file.xls" HTTP-LM 0=
  IF
    2SWAP 2OVER
    COMPARE 0<>
    IF
      S" C:\Temp\3.up" FWRITE
      S" http://...../file.xls" HTTP-GET 0=
      IF
        S" C:\Temp\file.xls" FWRITE
        StartIn: "C:\Temp"
        ShowNormal NormalPriority
        QSTART-APP: "C:\Temp\file.xls"
      ELSE 2DROP 2DROP THEN
    ELSE 2DROP THEN
  ELSE 2DROP 2DROP THEN
THEN
)#

программа работает, но при перезагрузке кронтаба, nnCron 1.89 и 1.91 ругались на горбатый стек в строке S" http://...../file.xls" HTTP-LM 0=, 1.93.1172 не ругается, но... ведь дыма без огня не бывает? 2DROP'ы после ELSE подбирал в слепую, также как и 2SWAP 2OVER.

Может кто-нибудь предложит более правильный и лаконичный вариант решения этой задачи?

2. Вторая задача. раз в сутки в промежутке от 15:00 до 21:00 нужно запустить lua-скрипт, который создаст файл, который, в свою очередь, нужно залить на инет-сервер, более в этот день скрипт запускать не нужно.

Пример 2.
Spoiler: show
Code: Select all
#( Example2
NoLog
AsLoggedUser
LoadProfile
Time: 0 15-21 * * * *
Action:
FILE-EXIST: "C:\Temp\2.up"
IF
FILE-WRITE-DATE: "C:\Temp\2.up"
ELSE
CUR-DATE
-1 DAY+
THEN
CUR-DATE
DATE- 0 <
IF
StartIn: "Z:\Temp"
ShowMinimized NormalPriority
START-APPW: C:\Lua5\lua5.1.exe C:\Lua5\1.lua
FILE-EXIST: "Z:\Temp\1.html"
IF
StartIn: "Z:\Temp"
ShowMinimized NormalPriority
START-APPW: C:\Util\curl.exe -g -T Z:\Temp\1.html -u xxx:xxx ftp://xxxx:21/
S" 1.html uploaded" CRON-LOG
FILE-EXIST: "C:\Temp\2.up"
IF
FILE-DELETE: "C:\Temp\2.up"
THEN
FILE-CREATE: "C:\Temp\2.up"
BALLOON: "1.html created & uploaded"
ELSE
MSG: "1.html not exist!"
THEN
ELSE
BALLOON: "Nothing!"
THEN
)#


Опять же - работает, но хотелось бы более грамотный и лаконичный вариант.
AleXH
 
Posts: 44
Joined: Sun, 31 Mar 2013, 10:23

Re: Отладка программы (задачи кронтаба). Как?

Postby VoidVolker » Tue, 03 Sep 2013, 19:07

AleXH wrote:Есть ли возможность трассировки программы с одновременным просмотром стека? Есть ли какая либо среда или инструментарий, позволяющий это делать наглядно и удобно?

Очень просто: открыть мануал и посмотреть стековый комментарий для каждого слова.
AleXH wrote:как посмотреть его состояние перед исполнением некорректной команды?

viewtopic.php?f=23&t=9477#p21479
Code: Select all
OK


Code: Select all
FILE-EXIST: "C:\Temp\2.up" IF
  FILE-WRITE-DATE: "C:\Temp\2.up"  \ ( -- )
ELSE
  CUR-DATE
  -1 DAY+    \ ( -- u ) \ <--- Раз.
THEN

Два, три, четыре:
    CUR-DATE ( -- u )
    DAY+ ( y m d days -- y1 m1 d1 )
    DATE- ( u1 u2 -- u )
Пять:
    <Вчера> <Минус> <Сегодня> = -1
    -1 <меньше нуля?> = Всегда <истина>
Шесть:
Code: Select all
<истина> IF

THEN
Дальше считать не стал.
Итого, выкинув лишний код и сделав нормальное форматирование, можно получить примерно вот такой результат:
Code: Select all
#( Example1
NoLog
AsLoggedUser
LoadProfile
Time: 0 15-21 * * * *
Action:
  FILE-EXIST: "C:\Temp\3.up" IF
    FILE-WRITE-DATE: "C:\Temp\3.up"
  ELSE
    FILE-CREATE: "C:\Temp\3.up"
  THEN

  S" http://...../file.xls" HTTP-LM IF 2DROP EXIT THEN
  2DUP  S" C:\Temp\3.up" FILE
  COMPARE IF 2DROP EXIT THEN
  S" C:\Temp\3.up" FWRITE
 
  S" http://...../file.xls" HTTP-GET IF 2DROP EXIT THEN
  S" C:\Temp\file.xls" FWRITE
  StartIn: "C:\Temp"
  ShowNormal NormalPriority
  QSTART-APP: "C:\Temp\file.xls"
)#
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Отладка программы (задачи кронтаба). Как?

Postby AleXH » Tue, 03 Sep 2013, 20:07

VoidVolker, спасибо, но после появления message box'a с предложением запуска и нажатия Да, либо Нет, nnCron пишет stack error. Но главное, при выполнении задачи (а это происходит каждый час) файл скачивается всегда , а не лишь тогда, когда его время модификации свежее 3.up (маркерный файл).
AleXH
 
Posts: 44
Joined: Sun, 31 Mar 2013, 10:23

Re: Отладка программы (задачи кронтаба). Как?

Postby AleXH » Thu, 25 Sep 2014, 20:13

Сделал так:
Spoiler: show
Code: Select all
#( Price
SingleInstance
NoLog
AsLoggedUser
LoadProfile
Time: 0 17-23 * * * *
: MyUrl S" http://...../price.xls" ;
: MyFile S" C:\Temp\price.xls" ;
Action:
 MyUrl HTTP-CHANGED
 0<
 IF
  HTTP-RESULT 200 <>
  IF
   MSG: "Server response: %HTTP-RESULT%"
  ELSE
   MyUrl HTTP-GET
   0=
   IF
    MyFile FWRITE
    S" Open new price?" QUERY
    0<> IF MyFile START-APP THEN
   THEN
  THEN
 THEN
)#


VoidVolker, новый билд с фиксами компилировать не собираетесь? - В 1.93b13 1172 (XPSP2) консоль не работает, вернулся на 1.91, но и в ней какие-то глюки проскакивают.
AleXH
 
Posts: 44
Joined: Sun, 31 Mar 2013, 10:23

Re: Отладка программы (задачи кронтаба). Как?

Postby VoidVolker » Thu, 25 Sep 2014, 21:01

AleXH wrote:В 1.93b13 1172 (XPSP2) консоль не работает

Как именно не работает? У меня работает.
AleXH wrote:но и в ней какие-то глюки проскакивают.

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

Re: Отладка программы (задачи кронтаба). Как?

Postby AleXH » Thu, 25 Sep 2014, 22:18

1.93b13
Как именно не работает? У меня работает.

Открывается квадрат Малевича, текст, который пишешь сам - виден, а ответа от крона нет. Тем не менее bye - работает.
1.91
Какие?

Например:
1. бокс QSTART-APPW провисев энное время с вопросом о запуске проги, запускает её самолично, хотя таймера в ней по описанию нет.
2. бывает не хотят работать START-APPW - такое впечатление, что они просто игнорируются - зависимостей не заметил - ни с того, ни с сего упрётся и всё.
3. Иногда (редко) nnCron.tab после перезагрузки перезатирается (замещается) дефолтной болванкой с purge-cron.
4. иногда не хочет выполнять задачу, если запускаешь её вручную через меню TSA icon nnCron - RCM - Start Task - ...
5. может ещё что-то было - уже не вспомню.
AleXH
 
Posts: 44
Joined: Sun, 31 Mar 2013, 10:23

Re: Отладка программы (задачи кронтаба). Как?

Postby VoidVolker » Fri, 26 Sep 2014, 07:58

AleXH wrote:Открывается квадрат Малевича, текст, который пишешь сам - виден, а ответа от крона нет. Тем не менее bye - работает.

А консоль правильно настроена? У меня и у всех остальных пользователей все работает отлично.
AleXH wrote:1. бокс QSTART-APPW провисев энное время с вопросом о запуске проги, запускает её самолично, хотя таймера в ней по описанию нет.
2. бывает не хотят работать START-APPW - такое впечатление, что они просто игнорируются - зависимостей не заметил - ни с того, ни с сего упрётся и всё.

Справочная система nnCron > Ключевые слова nnCron > Запуск приложений и открытие документов
Обратите внимание, что постфиксное слово START-APP нельзя использовать в консоли. Чтобы запустить приложение из консоли, используйте слово StartApp ( si a u -- ?):

AleXH wrote:3. Иногда (редко) nnCron.tab после перезагрузки перезатирается (замещается) дефолтной болванкой с purge-cron.
4. иногда не хочет выполнять задачу, если запускаешь её вручную через меню TSA icon nnCron - RCM - Start Task - ...

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

Re: Отладка программы (задачи кронтаба). Как?

Postby AleXH » Fri, 26 Sep 2014, 11:59

А консоль правильно настроена?

? - 1.91 в консоли всё отображает, 1.93 только то, что ввожу я. Может консоли в 1.93 нужны тесселяция, 4D и пр. космические примочки видео драйвера? Может скомпилировали с завышенными требованиями к видео драйверу?
Справочная система nnCron > Ключевые слова nnCron > Запуск приложений и открытие документов

Это было учтено
Spoiler: show
Code: Select all
    StartIn: "Z:\Temp"
    ShowMinimized NormalPriority
    START-APPW: C:\Lua5\lua5.1.exe C:\Lua5\1.lua
AleXH
 
Posts: 44
Joined: Sun, 31 Mar 2013, 10:23

Re: Отладка программы (задачи кронтаба). Как?

Postby VoidVolker » Fri, 26 Sep 2014, 13:25

AleXH wrote:? - 1.91 в консоли всё отображает, 1.93 только то, что ввожу я. Может консоли в 1.93 нужны тесселяция, 4D и пр. космические примочки видео драйвера? Может скомпилировали с завышенными требованиями к видео драйверу?

В 1.93. консоль ничем не отличается от версии в 1.91. Никаких дополнительных требований к компьютеру не появилось. Попробуйте переустановить ннкрон с настройками по умолчанию.
AleXH wrote:Это было учтено

постфиксное слово START-APP нельзя использовать в консоли

Сюда же относится и START-APPW и QSTART-APPW, т.к. они в итоге все равно используют слово START-APP. Эти ограничения связаны с необходимостью авторизации задачи в системе / загрузке профиля для запуска приложения. Для запуска программ из консоли ннкрона следует использовать слово StartApp или сделать отдельную задачу и передавать ей строку запуска и там использовать стандартное слово START-APP.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Отладка программы (задачи кронтаба). Как?

Postby ANR Daemon » Tue, 21 Oct 2014, 01:47

Ну вот и до меня докатилось…
Win7/64, 1.9.beta3 запущен как приложение.

Code: Select all
---------------------------
nnCron
---------------------------
CLASSIC-TASK-#-DE_Start: Синтаксическая ошибка в кронтабе!!!. Кронтаб: C:\Users\anrdaemon\AppData\Roaming\nnCron\hotkeys~swtor.tab. Line: 80
---------------------------
ОК
---------------------------


Code: Select all
#( CLASSIC-TASK-#-DE_Start
NoLog
AsLoggedUser
WatchHotKey: "$G"
Action:
0 TO DE_INTR
55 0 DO
  DE_INTR 0=
  IF
    HK_hWnd N>S WIN-EXIST?
    IF
      0 VK_F12 WM_KEYDOWN HK_hWnd SendMessageA DROP
      user_KeyUpFlags VK_F12 WM_KEYUP HK_hWnd SendMessageA DROP
      4000 PAUSE
    THEN
  THEN
LOOP
S" Done with stuff." MsgBox
)#


80-я строка: " 0 VK_F12 WM_KEYDOWN HK_hWnd SendMessageA DROP".
WinDefs.spf загружен. По крайней мере указан к загрузке… Чтояделаюнетак?
ANR Daemon
 
Posts: 234
Joined: Mon, 26 Feb 2007, 22:59

Re: Отладка программы (задачи кронтаба). Как?

Postby ANR Daemon » Tue, 21 Oct 2014, 01:59

Не, нифига не загружен.
По полному пути плагины не грузятся. Ну и какой смысл нафиг?
ANR Daemon
 
Posts: 234
Joined: Mon, 26 Feb 2007, 22:59

Re: Отладка программы (задачи кронтаба). Как?

Postby AlikasS » Wed, 22 Oct 2014, 06:34

ANR Daemon wrote:Ну вот и до меня докатилось…
Win7/64, 1.9.beta3 запущен как приложение.

не самая последняя бета ;)
P.S. я кстати то же переполз на Win7/64
все не соберусь с кроном там поиграться.
User avatar
AlikasS
 
Posts: 1434
Joined: Wed, 28 Jun 2006, 05:39
Location: Khabarovsk

Re: Отладка программы (задачи кронтаба). Как?

Postby ANR Daemon » Wed, 05 Nov 2014, 19:04

AlikasS wrote:
ANR Daemon wrote:Ну вот и до меня докатилось…
Win7/64, 1.9.beta3 запущен как приложение.

не самая последняя бета ;)
P.S. я кстати то же переполз на Win7/64
все не соберусь с кроном там поиграться.

Чиво?
Code: Select all
Task scheduler by nnSoft

nncron.exe v 1.93b3 Build 1125 29.12.2008
tm.exe v 1.93b3 Build 551 29.12.2008

Я потихоньку вправляю задачи, требующие вправления.
В основном всё работает, проблемы только из-за того, что автор забил большой болт на своё творение.
ANR Daemon
 
Posts: 234
Joined: Mon, 26 Feb 2007, 22:59

Re: Отладка программы (задачи кронтаба). Как?

Postby VoidVolker » Wed, 05 Nov 2014, 19:21

ANR Daemon wrote:В основном всё работает, проблемы только из-за того, что автор забил большой болт на своё творение.

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

Re: Отладка программы (задачи кронтаба). Как?

Postby ANR Daemon » Wed, 05 Nov 2014, 20:34

Например, nnCron, запущенный приложением, не игнорирует специфичные для сервиса флаги задачи.
И не может их удовлетворить, даже если у него есть для этого все права (запущен под суперадмином).
Например, необходимость держать два процесса nnCron, если какие-то задачи нужно выполнять независимо от наличия или отсутствия залогиненных пользователей.
Например, отсутствие нормального телнета.
Например, кривой запуск внешних программ.
Мне продолжать?
ANR Daemon
 
Posts: 234
Joined: Mon, 26 Feb 2007, 22:59

Next

Return to nnCron forum (Russian)

Who is online

Users browsing this forum: No registered users and 2 guests

cron