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

» nnCron-Планировщик с поддержкой скриптового языка

Автор: lucky_Luk
Дата сообщения: 25.07.2007 20:12
Stygis
Что-то не пойму, как работать с этим Rule:. Запускаю вручную тестовую задачу:

Код:
#( 1
AsLoggedUser
Rule: PROC-EXIST: "VirtualDub.exe" NOT
Action:
BEEP: 200 500
EXIT
)#
Автор: Stygis
Дата сообщения: 25.07.2007 20:30
lucky_Luk
AFAIK, Rule: игнорируется при ручном запуске задач.
Можешь перекинуть Rule: временно в тело задачи IF'ом.
Автор: lucky_Luk
Дата сообщения: 25.07.2007 21:35
Stygis

Цитата:
AFAIK, Rule: игнорируется при ручном запуске задач.

Буду знать.

Цитата:
Можешь перекинуть Rule: временно в тело задачи IF'ом.

Ругалось на синтаксическую ошибку. Пришлось тестировать запуском по времени, все работает.

В nnCron или в Форте есть что-то типа оператора GOTO, чтобы при определенных условиях пропустить кусок задачи и перейти к определенной ее части?
Автор: DJ makrus
Дата сообщения: 27.07.2007 11:06
IDentify
Цитата:
Можно поподробней насчёт этого флага. Лучше с примером.
да там все просто.
Есть переменная в которую записывается "1" в задаче посылающей комп в перезагрузку, в задаче выключающей комп эта переменная не трогается, и, наконец, в шапке задачи которая прерывает процесс выключения/перезагрузки компа в Rule: проверяется равенство переменной нулю, если равно нулю (либо я запустил задачу выключения компа, либо какая-либо программа запустила выключение\перезагрузку) то далее следует диалог в котором выясняется согласен ли я на продолжение начатого процесса, и еще ряд моментов..., т.о. обычные выключения\перезагрузки мимо меня не проходят.

Petrik Pyatochkin
Цитата:
А может ли nnCron отправить содержимое буфера обмена какому-нибудь приложению?
содержимое ты найдешь, как уже было сказано в %CLIPBOARD%, а отправить приложению (его окну) через WIN-SEND-KEYS:

nickddd
Цитата:
Похоже, что скрипт начинает перетаскивать файлы еще до того, как они падают в ABC целиком. Если в папку ABC бросить сразу много файлов, то, бывает, что файл копируется сразу и в DEF и в BAD.

Не, скрипт запускается только после того как была произведена очередная запись в папку, но если файлов больше одного за короткий промежуток времени, то запускается соттвествующее количество скриптов которые и начинают "драться" за файлы.
Скорее всего будет достаточно SingleInstance, более правильно будет разделять работу скриптов через семафоры, но это и несколько сложнее.

lucky_Luk
Цитата:
Что-то не пойму, как работать с этим Rule:

Во-первых, каждая задача, это новое Форт-слово, если имя нового слова совпадает с уже имеющимся, то старое его значение забывается. "1" - это тоже слово, причем очень часто используемое, т.о. образом обозвав задачу "1" ты очень сильно рискуешь, работоспособностью не только nnCron'а, но и всего компа в целом!
Придумывай название задачам по-оригинальнее!!!
Во-вторых, что бы проверить твою задачу, правильность в Rule: тебе надо просто подождать не более минуты после того как nnCron перечитает измененные кронтабы, так это задача будет запускаться каждую минуту (если отсуствует процесс VirtualDub.exe).
В-третьих, что там делает EXIT?

Цитата:
В nnCron или в Форте есть что-то типа оператора GOTO, чтобы при определенных условиях пропустить кусок задачи и перейти к определенной ее части?
Нет, этого оператора\слова и, как говориться, слава богу, ибо это ЗЛО! а поможет тебе IF ... THEN который и условие проверит и соотвественно решит выполнять или нет ту часть кода которую ты хотел бы в этом случае пропустить.
Автор: lucky_Luk
Дата сообщения: 27.07.2007 20:18
DJ makrus

Цитата:
обозвав задачу "1" ты очень сильно рискуешь, работоспособностью не только nnCron'а, но и всего компа в целом!


Цитата:
Во-вторых, что бы проверить твою задачу, правильность в Rule: тебе надо просто подождать не более минуты после того как nnCron перечитает измененные кронтабы, так это
задача будет запускаться каждую минуту (если отсуствует процесс VirtualDub.exe).

Буду знать .


Цитата:
В-третьих, что там делает EXIT?

В оригинале задача большая, раньше работала без Rule:, а теперь понадобилось ее усовершенствовать и сделать проверку на наличие пары процессов, которым эта задача (резервное копирование, запускается архиватор) мешает работать, так как сильно грузит систему.
EXIT поставил чтобы протестировать работу куска с Rule:, а остальное чтоб не выполнялось.
Автор: samy_club
Дата сообщения: 02.08.2007 16:43
Прописываю такую команду:

*/1 * * * * cd /home/localhost/cgi-bin/aura/; ./thread.pl

А в ответ nncron ругается на то что путь указан неверно.

Подскажите пожалуйста как правильно прописать такое задание?
Автор: lucky_Luk
Дата сообщения: 02.08.2007 21:13
Проблема с PROC-WAIT-IDLE.
Есть такая прога для поиска файлов - Архивариус 3000, для эффективного поиска ей нужно обновлять свой индекс файлов. Но для запуска индексирования Архивариус 3000 должен висеть в памяти, к тому же выключаться сам после индексирование он не умеет. Хотел заюзать задачу:

Код:
#( Индексирование
AsLoggedUser
OnceADay
Rule: IDLE: 420
Action:
START-APP: c:\Program Files\Archivarius 3000\Archivarius3000.exe
PROC-ID PROC-WAIT-IDLE
MSG: "%PROC-ID PROC-NAME%"
PROC-CLOSE: "%PROC-ID PROC-NAME%"
)#
Автор: Stygis
Дата сообщения: 03.08.2007 02:12
lucky_Luk
А индексированием занимается тот же процесс? Может этим занимается другая программа?
Автор: DJ makrus
Дата сообщения: 03.08.2007 07:58
samy_club
Цитата:
Прописываю в такую команду:...
где прописываешь? В командной строке?
Help читал? И словами опиши чего хочешь добиться.


lucky_Luk
Цитата:
Проблема с PROC-WAIT-IDLE...
внимательно читаем Help: Основная сфера применения - дождаться завершения загрузки программы...
Если хочешь что б заработало по этому же алгоритму, то используй PROC-WAIT-CPU-USAGE, а более надежен, IMHO, другой вариант: в настройках указываешь что бы по окончании индексирования появлялось окошко с результатами индексирования, после чего закрываешь поисковик.
Автор: samy_club
Дата сообщения: 03.08.2007 08:48
DJ makrus

Цитата:
где прописываешь? В командной строке?
Help читал? И словами опиши чего хочешь добиться.


Нет в окне добавления задачи для nncron. В поле действие - запустить приложение или открыть документ.
Автор: DJ makrus
Дата сообщения: 03.08.2007 09:04
samy_club
ну тогда объясни что означает каждый параметр той строки которую ты туда добавляешь.
Последние два моих вопроса из предыдущего поста пока в силе
Автор: samy_club
Дата сообщения: 03.08.2007 09:16
DJ makrus
Help - читал. Но сделать всеравно не получается. По поводу того чего хочу добиться. Мне нужно чтобы nncron каждую минуту запускал на Денвере файл thread.pl из директории z:\home\localhost\cgi-bin\aura\. Именно в ней и расположен данный файл.

ЗЫ: Perl установлен.
Автор: Stygis
Дата сообщения: 03.08.2007 09:38
samy_club
ИМХО, во-первых, юзай StartIn:, во-вторых, запускай perl thread.pl.
Автор: samy_club
Дата сообщения: 03.08.2007 09:46
Stygis

Дык я юзаю StartIn. Вот как выглядит мой код в поле дополнительно:

Action:
StartIn: "z:\home\localhost\cgi-bin\aura\"
ShowNormal NormalPriority
START-APP: z:\home\localhost\cgi-bin\aura\tread.pl

А куда здесь надо вставить perl thread.pl ?

Автор: Stygis
Дата сообщения: 03.08.2007 10:00
samy_club

Код: START-APP: perl z:\home\localhost\cgi-bin\aura\tread.pl
Автор: samy_club
Дата сообщения: 03.08.2007 10:06
Stygis

Мой путь к Perl.exe выглядит так: z:\usr\bin\Perl.exe тогда приведенный тобой код будет выглядеть так:

START-APP: z:\usr\bin\Perl.exe z:\home\localhost\cgi-bin\aura\tread.pl

Или я где-то ошибся?
Автор: DJ makrus
Дата сообщения: 03.08.2007 10:26
samy_club
Цитата:
Help - читал
по тому что ты привел в своем первом посте складывается мнение что ты или не читал, или очень плохо/не весь
Попробуй:
Путь приложения или документа: perl
Параметры: z:\home\localhost\cgi-bin\aura\tread.pl
Поставь так же галку Как пользователь, выполнивший Logon
А на закладке дополнительно посмотри какая получилась строка START-APP: - там мож какие слеши/тире надо указывать для Perl'а при передаче ему скрипта на исполнение, тут я тебе не помошник.
И смотри потом лог-файл, какие там будут записи.
Автор: samy_club
Дата сообщения: 03.08.2007 10:35
DJ makrus

Ок. Попробую так.

Большое спасибо тебе за помощь!

Автор: ZEWS
Дата сообщения: 08.08.2007 20:00
Такой (возможно глупый) вопрос:
Что нужно прописать в Действие=>Завершить приложение=>Заголовок?
Нужно выгрузить прогу, которая сидит в трее. Если завершить её процесс, то иконка остаётся в трее, пока не проведёшь по ней курсором. Нужно что бы иконка сразу же исчезала. Или в данном случае можно только процесс убить?
Автор: Stygis
Дата сообщения: 08.08.2007 22:04
ZEWS
Можно послать ей через WINAPI-функцию сообщение на выход, тогда прога должна нормально выйти и иконка, наверна, сама уйдет


Цитата:
Что нужно прописать в Действие=>Завершить приложение=>Заголовок?

Прога только в трее? Или она бывает и в открытом варианте? Если в виде окна бывает, тогда заголовок ее окна возьми и пропиши туда - попробуй так.
Автор: DJ makrus
Дата сообщения: 09.08.2007 04:41
ZEWS
Цитата:
...Если завершить её процесс, то иконка остаётся в трее, пока не проведёшь по ней курсором. Нужно что бы иконка сразу же исчезала...

После завершения процесса воспользуйся словом TRAY-REFRESH, в Help'е найдешь
Автор: ZEWS
Дата сообщения: 09.08.2007 18:13
Stygis

Цитата:
Прога только в трее?

Чаще всего в трее... открываю изредка и сразу же сворачиваю обратно.

DJ makrus

Цитата:
После завершения процесса воспользуйся словом TRAY-REFRESH

Не понял... нужно после названия процесса написать TRAY-REFRESH? Или что?

Цитата:
в Help'е найдешь

Нашёл следующее:

Цитата:
TRAY-REFRESH

"Обновляет" системный трей и удаляет из него "фантомные" иконки, которые могут там остаться, например, после принудителного прерывания процесса.

Пример:

Код: #( test_close_miranda
NoActive
Action:
PROC-CLOSE: "miranda32.exe"
TRAY-REFRESH
)#

Автор: Sizif73
Дата сообщения: 09.08.2007 18:27
Может ли сабж отслеживать положение курсора, не для последующей эмуляции движения мыши а для непосредственного действия?
Простейший пример: загнать курсор в какой нибуть угол или определенную точку экрана и это запускает задачу.
В хелпе ответа не нашел.
Автор: IDentify
Дата сообщения: 09.08.2007 18:51
ZEWS

Код: #( test_close_miranda
NoActive
Action:
PROC-CLOSE: "miranda32.exe" \ имя процесса который будет закрыт
TRAY-REFRESH \ обновления трея
)#
Автор: Stygis
Дата сообщения: 09.08.2007 18:54
ZEWS

Цитата:
Куда это нужно добавить?

Ну там же в примере написано - закрываешь процесс и затем делаешь рефреш. В чем проблема? Напиши свою задачу.


Цитата:
Чаще всего в трее

Я не спрашивал, как ты ей пользуешься, я спросил, как прога работает. В любом случае, тебе проще использовать TRAY-REFRESH.
Автор: ZEWS
Дата сообщения: 09.08.2007 21:08
Блин... я в танке с непробиваемой бронёй...
Не могу понять как пользоваться этим TRAY-REFRESH

Добавлено:

Цитата:
как прога работает.

Блин, ну как она работает Сидит в трее, при желании её можно вызвать Как ещё объяснить?
Автор: Stygis
Дата сообщения: 09.08.2007 22:23
ZEWS

Цитата:
Как ещё объяснить?

Я спросил, есть ли у нее окно обычное или только значок. Ты отвечаешь, что открываешь прогу иногда


Цитата:
Не могу понять как пользоваться этим TRAY-REFRESH

Вызвать TRAY-REFRESH, что еще надо? )))))) TRAY-REFRESH обновляет трей. Что тебе еще надо? Просто вызываешь эту команду. Все. Точка
Автор: ZEWS
Дата сообщения: 10.08.2007 05:20
Stygis

Цитата:
есть ли у нее окно обычное или только значок.

Есть.
Автор: DJ makrus
Дата сообщения: 10.08.2007 08:44
Sizif73
Цитата:
загнать курсор в какой нибуть угол или определенную точку экрана и это запускает задачу
В шапке задачи проверяешь на отсутствие процесса который собрался запускать, а в теле задачи запускаешь цикл с проверкой через MOUSE-POS текущего положения мыши, если там где надо то запускаешь приложение и выходишь из задачи, если не там, то делаешь паузу на n секунд, после чего снова идет проверка.
ZEWS
Цитата:
Блин, ну как она работает ...
В примере из Help'а замени имя процесса на имя своего процесса и все. Можно еще после завершения процесса, для надежности, добавить строку с "PAUSE: 1000".
Автор: ZEWS
Дата сообщения: 10.08.2007 14:13
DJ makrus
Извините пожалуйста Не совсем понял куда вообще добавлять этот код... В поле на вкладке "Дополнитено", добавить к тому что там уже прописано?

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

Предыдущая тема: Как писать кириллицей, а НЕ латиницей (транслитом)


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