Удаление задачи после успешного выполнения

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

Удаление задачи после успешного выполнения

Postby ruspad » Wed, 01 Jul 2015, 11:23

Всем привет!

Подскажите, пожалуйста, как можно удалить задачу после её успешного выполнения.
т.е. не после запуска (параметром задачи "RunOnce") и именно если задача успешно выполнена, например, не было вызвано ни одной ошибки.

В моём случае задача дописывается в таб автоматически, суть задачи получить файл с ФТП.
Так вот как только выполняемая программа вернет "0" (после успешного получения файла), передать крону параметр на удаление данной задачи.

Пробовал указать параметры задачи "RunOnce" и "HyperActive", а в акшене NoDel в тех местах где возвращается ошибка.

Например:
Spoiler: show
Code: Select all
#( TEST_download
RunOnce
HyperActive
AsLoggedUser
Action:
START-APPW: "ftp\ncftpget.exe" -v -t 40 -r 40 -u user -p pass host C:\temp /SHARED/file.txt
ExitCodeProc
CASE
0   OF
      \ MSG: "Задача удалена"
   ENDOF
3   OF
      NoDel
           \ MSG: "Задача не удалена"
   ENDOF
DUP OF
   NoDel
           \ MSG: "Задача не удалена"
   ENDOF
ENDCASE   
)#


В этом случае крон ругается на ошибку синтаксиса, строка " ENDOF".

Но если слово "NoDel" поместить в конец задачи, тогда, ошибки не будет и задача не удалиться не смотря на установленное слово "RunOnce" в параметрах задачи.

Может есть все таки какое-то слово? ведь сам та механизм удаления задачи есть!
Уж очень не хочется писать (костыль) скрипт на VBS, который бы контролировал и удалял завершившиеся задачи.
ruspad
 
Posts: 16
Joined: Mon, 05 Mar 2012, 16:12

Re: Удаление задачи после успешного выполнения

Postby dothen » Fri, 03 Jul 2015, 20:53

Наверно так же как NoActive

Code: Select all
#( TEST_download
RunOnce
HyperActive
AsLoggedUser
Action:
START-APPW: "ftp\ncftpget.exe" -v -t 40 -r 40 -u user -p pass host C:\temp /SHARED/file.txt
ExitCodeProc
CASE
0   OF
      \ MSG: "%ExitCodeProc% Задача удалена"
    ENDOF
3   OF
      CUR-NODE CF-NODEL SET-CRON-FLAG
      \ MSG: "%ExitCodeProc% Задача не удалена"
    ENDOF
DUP OF
      CUR-NODE CF-NODEL SET-CRON-FLAG
      \ MSG: "%ExitCodeProc% Задача не удалена"
    ENDOF
ENDCASE
)#
dothen
 
Posts: 184
Joined: Mon, 16 Mar 2015, 04:58

Re: Удаление задачи после успешного выполнения

Postby ruspad » Mon, 06 Jul 2015, 17:00

Спасибо! Все заработало =) :prayer:
ruspad
 
Posts: 16
Joined: Mon, 05 Mar 2012, 16:12

Re: Удаление задачи после успешного выполнения

Postby ruspad » Mon, 13 Jul 2015, 09:45

ruspad wrote:Спасибо! Все заработало =) :prayer:


заработало да не совсем, задача конечно не удаляется после выполнения слова "CUR-NODE CF-NODEL SET-CRON-FLAG", но и становится не активной до следующего перечитывания ТАБов.
Даже не смотря на установленный параметр HyperActive, задача не стартует. =(

Подскажите как решить данный вопрос?

Заранее спасибо за ответы!
ruspad
 
Posts: 16
Joined: Mon, 05 Mar 2012, 16:12

Re: Удаление задачи после успешного выполнения

Postby dothen » Mon, 13 Jul 2015, 22:59

Code: Select all
#( TEST_download
RunOnce
HyperActive
AsLoggedUser
Action:
START-APPW: "ftp\ncftpget.exe" -v -t 40 -r 40 -u user -p pass host C:\temp /SHARED/file.txt
ExitCodeProc
CASE
0   OF
       CUR-NODE CF-NODEL CLR-CRON-FLAG
      \ MSG: "%ExitCodeProc% Задача удалена"
    ENDOF
3   OF
      CUR-NODE CF-NODEL CF-ACTIVE + SET-CRON-FLAG
      \ MSG: "%ExitCodeProc% Задача не удалена"
    ENDOF
DUP OF
      CUR-NODE CF-NODEL CF-ACTIVE + SET-CRON-FLAG
      \ MSG: "%ExitCodeProc% Задача не удалена"
    ENDOF
ENDCASE
)#
dothen
 
Posts: 184
Joined: Mon, 16 Mar 2015, 04:58

Re: Удаление задачи после успешного выполнения

Postby ruspad » Thu, 16 Jul 2015, 13:16

dothen wrote:      CUR-NODE CF-NODEL CF-ACTIVE + SET-CRON-FLAG

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

В кроновских словах нашел слово "TASK-DEL".
Долго не мог разобраться какой у него синтаксис. :Hangman: Кстати, где можно поискать информацию по недокументированным словам?
В итоге все получилось, задача удаляется! :supz:

Может кому пригодиться вот пример использования:

Code: Select all
#( TEST_DEL_TASK
AsLoggedUser
Action:
QUERY: "Удалить задачу?"
IF 
TEST_DEL_TASK TASK-DEL
MSG: "Задача удалена"
ELSE
MSG: "Задача НЕ удалена"
THEN
)#
ruspad
 
Posts: 16
Joined: Mon, 05 Mar 2012, 16:12

Re: Удаление задачи после успешного выполнения

Postby VoidVolker » Fri, 17 Jul 2015, 08:54

ruspad wrote:Может кому пригодиться вот пример использования:

А вот и неправильно. Вот так надо использовать:
Code: Select all
TASK-DEL <task_name>

Либо:
Code: Select all
<task_name> TASK-DELETE

ruspad wrote:Кстати, где можно поискать информацию по недокументированным словам?

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

Re: Удаление задачи после успешного выполнения

Postby ruspad » Fri, 17 Jul 2015, 14:00

VoidVolker wrote:А вот и неправильно.


хмм... ну у меня только так заработало.
Code: Select all
<task_name> TASK-DEL


При выполнении вот так:
VoidVolker wrote:
Code: Select all
TASK-DEL <task_name>



у меня возвращалась (да и сейчас возвращается) ошибка:
Image

Вот что пишет в nncron.out:

Spoiler: show
EXCEPTION! CODE:C0000005 ADDRESS:4B2240 WORD:@ REGISTERS:
1F1ED7C 94 1E 18 01 0C 00 00 00 00 00 00 00 01 00 42 01 ”.............B.
1F1ED8C 01 00 00 00 10 EE 51 00 2C FE F1 01 40 22 4B 00 .....?Q.,??.@"K.
1F1ED9C 1B 00 00 00 02 02 01 00 AC EF F1 01 23 00 00 00 ........¬??.#...
USER DATA: 1181E94 HANDLER: 1F1EFC0 RETURN STACK:
1F1EFAC : 5159A9 TASK-DELETE
1F1EFB0 : 51EE10 TEST_DEL_TASK
1F1EFB4 : 515A43 TASK-DEL
1F1EFB8 : 51ED1F TEST_DEL_TASK
1F1EFBC : 4B4AD3 CATCH
1F1EFC0 : 0 <not found>


Ну и вот так работает:
VoidVolker wrote:Либо:
Code: Select all
<task_name> TASK-DELETE



VoidVolker wrote:Либо в исходниках и библиотеках, либо через дизассемблер (из дистрибутива SPF).

Стесняюсь спросить... где и как это сделать? :oops:
ruspad
 
Posts: 16
Joined: Mon, 05 Mar 2012, 16:12

Re: Удаление задачи после успешного выполнения

Postby VoidVolker » Fri, 17 Jul 2015, 15:03

ruspad wrote:хмм... ну у меня только так заработало.

TASK-DEL берет имя задачи из входного потока, если задача не найдена - выдает ошибку. А вот проверки на длину строки там нету - поэтому нет ошибки. А т.к. перед этим на стек положили идентификатор задачи - далее вызывается уже TASK-DELETE. В консоли TASK-DEL работает нормально, а вот в самой задаче - так не получится. Причина мне неизвестна, по идее должно работать, но что-то где-то не так. Поэтому на данный момент единственно правильный способ удаления задачи в рантайме выглядит таким образом:
Code: Select all
<task_name> TASK-DELETE


ruspad wrote:Стесняюсь спросить... где и как это сделать?

http://www.nncron.ru/download/src.rar
http://spf.sourceforge.net/
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56


Return to nnCron forum (Russian)

Who is online

Users browsing this forum: No registered users and 2 guests

cron