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

» nnCron

Автор: ilyamaina
Дата сообщения: 04.11.2011 00:28
AlikasS

Цитата:
готовых решений нет.

Печально. Но спасибо.
Автор: AlikasS
Дата сообщения: 04.11.2011 06:31
brRamires
попробуй такой батник для запуска портабл

Код: cd %~dp0
cd %CD%

start "" "%~dp0nncron.exe" -ns -dir "%~dp0"
Автор: brRamires
Дата сообщения: 04.11.2011 23:52
AlikasS
Батник вроде работает, хотя я не догоняю, что он делает, команды какие-то странные...

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

Сборка твоя последняя nncron193b10 for windows7_v2.1 от 12.10.2011. Там дело в том, что задача "задача_для_крона_сервиса" не может удалиться из файла nncron.tab, хотя в файл deleted.tab она добавляется. Если в начале файла nncton.tab удалить пустую строку, и затем в tm.exe сделать по кнопке "Удалить" двойной клик, то выскакивает ошибка:

и в начале файла nncron.tab появляются несколько левых символов (p3).
Если несколько раз нажать на Удалить, то задача удаляется (при такой же ошибке), но левые символы в файле остаются.
В общем баг либо в тексте самой задачи, либо в программе.
Автор: AlikasS
Дата сообщения: 08.11.2011 12:47
brRamires

Цитата:
Батник вроде работает, хотя я не догоняю, что он делает, команды какие-то странные...

вообще в батнике нужна только одна строка

Код: start "" "%~dp0nncron.exe" -ns -dir "%~dp0"
Автор: svs123456789
Дата сообщения: 09.11.2011 12:13
а не подскажите, как организовать с помощью крона включение компа-вывод из спящего режима по дням недели?
т.е. пробуждение компа по будням в 7 утра
с последующим засыпанием компа через полчаса
Автор: ORGaniZM
Дата сообщения: 09.11.2011 12:16
svs123456789
это вряд ли можно сделать программными средствами, только через настройки BIOS
Автор: svs123456789
Дата сообщения: 09.11.2011 12:20
ORGaniZM
а крон не в состоянии пробудить комп?
Автор: brRamires
Дата сообщения: 09.11.2011 13:18
AlikasS

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

Это в XP, в Семёрке у меня tm.exe вообще падает с ошибкой, и к тому же служба в семёрке не хочет выполнять задания, т.е. служба запущена, но даже простейшее задание

Код: #( test
Action:
TMSG: "test" 5
)#
Автор: unreal666
Дата сообщения: 09.11.2011 13:37
brRamires
в 7-ке службы (по крайней мере у службы с правами системы) кажется не могут оперировать окнами (точнее всем, что может быть связано с визуализацией/клавишами и др. API-функциями, связанными с взаимодействием с юзером).
Автор: AlikasS
Дата сообщения: 09.11.2011 14:33
unreal666

Цитата:
в 7-ке службы (по крайней мере у службы с правами системы) кажется не могут оперировать окнами (точнее всем, что может быть связано с визуализацией/клавишами и др. API-функциями, связанными с взаимодействием с юзером).

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

Добавлено:
svs123456789

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

на оф.сайте есть плагин wakeup.spf не помню идет ли он в комплекте сразу.
примеры есть в нем, на оф.сайте и в хелпе.
к этому плагину есть расширение от меня, чуть позже дам ссылку если не хватит функционала плагина


Добавлено:
brRamires

Цитата:
Это в XP, в Семёрке у меня tm.exe вообще падает с ошибкой,...

самое простое решение я уже написал,
это ручное редактирование кронтаба,
что дает большую свободу и необходимо при составлении более менее сложных задач.
Автор: ORGaniZM
Дата сообщения: 10.11.2011 04:47
AlikasS (18:33 09-11-2011)
Цитата:
плагин wakeup.spf

признаться, удивлен
Автор: AlikasS
Дата сообщения: 10.11.2011 10:09
ORGaniZM
а вот и расширение плагина wakeup.spf
wakeup2.spf
делал как то в 2008 году
Автор: brRamires
Дата сообщения: 10.11.2011 14:24
AlikasS

Цитата:
в моей сборке есть плагин CronScript.spf
с помощью которого можно наладить контакт сервиса и пользователя

Как его использовать? Пример из файла

Код: #( test-start-bat
RunMissed
Action:
<CronScript>
: main
TMSG: "скрипт крона"
;
</SCRIPT>
)#
Автор: AlikasS
Дата сообщения: 10.11.2011 15:24
brRamires
я уже запутался на какой системе и как у тебя запущен крон
если речь о вин 7 и кроне-сервисе
то в кронтаб сервиса надо поместить

Код: #( test-start-bat
AsLoggedUser
LoadProfile
Action:
<CronScript>
: main
TMSG: "оповещение от крона-сервиса"
;
</SCRIPT>
)#
Автор: brRamires
Дата сообщения: 10.11.2011 15:43
AlikasS

Цитата:
то в кронтаб сервиса надо поместить...

Поместил - не работает. (в 7)

upd
Второй скрипт в XP для сервиса работает, а для приложения - нет (даже "стартуем" не отображается). Хотя для сервиса вводить имя и пароль не обязательно, т.к. работает и без них. Остается лишь для Семёрки заставить работать сервис nnCron.
Автор: AlikasS
Дата сообщения: 12.11.2011 07:12
brRamires
в 7 для сервиса можно и просто написать

Код: #( test-start-batWork
\ NoActive
Time: * */12 * * * *
SingleInstance
Action:
StartIn: "C:\Program Files\MyDefrag v4.3.1"
START-APPW: "c:\Program Files\MyDefrag v4.3.1\MyDefrag.exe" "c:\Program Files\MyDefrag v4.3.1\Scripts\SystemDiskDaily.MyD"
)#
Автор: brRamires
Дата сообщения: 14.11.2011 21:44
AlikasS
Работает. Интерфейс под пользователем, как я понял, на 7 никак поднять не получится для MyDefrag?
У меня, кстати, такой вариант:

Код: [no]#( notepad
RunMissed
AsLoggedUser
LoadProfile
User: "User" SecPassword: "icSqhsGmh1==" Domain: "ATHLON" LogonInteractive
Action:
MSG: "поехали"
StartIn: "C:\Windows"
ShowNormal NormalPriority
START-APP: C:\Windows\notepad.exe
)#
[/no]
Автор: AlikasS
Дата сообщения: 16.11.2011 14:38
svs123456789

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


под твои условия переделывать не буду,
покажу рабочую задачу - пробуждение в 8 40 по рабочим дням
(необходимо подключить оба плагина, что выше в теме)

Код: #( пробуждение_в_8-40
WatchSuspend
Action:
WDay@ 5 <
IF
WakeAt: "08:40"
ELSE
WakeAtWd: "08:40" 1
THEN
)#
Автор: unreal666
Дата сообщения: 17.11.2011 00:25
brRamires

Цитата:
Вообще есть ощущение, что nncron нужно переделывать, чтобы работал в win7 (а скоро и win 8 выйдет) без танцев. Как это реализовано, например в антивирусов: есть служба, делающая основную работу, и есть программа-оболочка для настройки и управления службой, и они действуют параллельно. Что-то такое замутить и с nncron...

Только в уже готовых прогах юзеру не надо вручную указывать какие API когда юзать. Да и интерфейс у них в основном только для связи со службой.
А в nncron ты это сам задаешь. А т.к. разные API могут действовать только с определенными правами (некоторые только на уровне или юзера или системы), то 1) придется разбивать некоторые задачи на более маленькие, 2) самому определять какие слова/API на каком уровне (с какими правами) должны работать.
Автор: AlikasS
Дата сообщения: 17.11.2011 12:13
вообще задача интересная, у сервиса-крона открыт порт для общения,
через него наверно можно получать инфомацию.
надо пробовать, но пока нет времени
Автор: brRamires
Дата сообщения: 19.11.2011 22:57
Как можно запускать задачи не по календарным дням, часам и т.д., а по времени работы Windows/nnCron? Напр., отработала система 12 часов (не непрерывно, а вообще, т.е. время, когда компьютер выключен, не учитывать) - запустить задачу.
Тут, как я понял, вариант с указанием времени старта типа 0 */12 * * * * не годится, т.к. после перезагрузки счётчик часов сбросится в 0 (т.е. этот вариант годится только если система работает без выключений/перезагрузок?).
Автор: AlikasS
Дата сообщения: 20.11.2011 02:24
brRamires

Цитата:
Как можно запускать задачи не по календарным дням, часам и т.д., а по времени работы Windows/nnCron? Напр., отработала система 12 часов (не непрерывно, а вообще, т.е. время, когда компьютер выключен, не учитывать) - запустить задачу.
Тут, как я понял, вариант с указанием времени старта типа 0 */12 * * * * не годится, т.к. после перезагрузки счётчик часов сбросится в 0 (т.е. этот вариант годится только если система работает без выключений/перезагрузок?).

можно считать и сохранять время в файловой или реестровой переменной
Автор: brRamires
Дата сообщения: 20.11.2011 22:42

Цитата:
можно считать и сохранять время в файловой или реестровой переменной

А как проверить, что реестровая переменная существует? Вариант
S" HKEY_LOCAL_MACHINE\SOFTWARE\nnSoft\var\my_var" REG-KEY-EXIST?
не работает.
Автор: AlikasS
Дата сообщения: 23.11.2011 14:20
brRamires
Цитата:

А как проверить, что реестровая переменная существует? Вариант
S" HKEY_LOCAL_MACHINE\SOFTWARE\nnSoft\var\my_var" REG-KEY-EXIST?
не работает.

а зачем проверять так?
regVAR my_var \ переменная должна быть просто объявлена
Автор: brRamires
Дата сообщения: 23.11.2011 17:55
AlikasS
Потому что если переменной не существует, то её нужно создать и приравнять к нулю, а иначе - увеличить на 1. Я в Форте почти ничего не смыслю, у меня получается как-то так:

Код: [no]#( test_var
NoActive
Time: */10 * * * * *
SingleInstance

regVAR time_counter
Action:
S" HKEY_LOCAL_MACHINE\SOFTWARE\nnSoft\var\time_counter" REG-KEY-EXIST?
IF
MSG: "Текущее значение time_counter = %time_counter%"
time_counter S>NUM
1+
N>S TO time_counter

time_counter S>NUM
60 >
IF
MSG: "Пора выполнять задачу."
0
N>S TO time_counter
THEN
ELSE
MSG: "time_counter не существует"
0
N>S TO time_counter
THEN
)#[/no]
Автор: DJ makrus
Дата сообщения: 24.11.2011 06:58
brRamires
Цитата:
Потому что если переменной не существует, то её нужно создать и приравнять к нулю
После того как ты ее объявил она никуда уже не денется пока ты ее не удалишь. Убирай проверку и твоя задача сократится почти в 2 раза.
Если ты проверяешь значение переменной каждые 10 минут, то 12 часов натикает когда в переменной будет значение 72, а не 60.
Автор: AlikasS
Дата сообщения: 24.11.2011 10:59
brRamires

Цитата:
Потому что если переменной не существует, то её нужно создать и приравнять к нулю, а иначе - увеличить на 1.

DJ makrus

Цитата:
После того как ты ее объявил она никуда уже не денется пока ты ее не удалишь. Убирай проверку и твоя задача сократится почти в 2 раза

согласен
Автор: brRamires
Дата сообщения: 24.11.2011 19:57
DJ makrus, AlikasS
когда я тестировал эти переменные, у меня выскакивала "Ошибка стека", и я решил, что нужно вручную приравнять переменную к нулю.

Итоговый вариант таков:

Код: [no]#( MyDefrag
NoActive
SingleInstance
Action:
<CronScript>
: main
StartIn: "D:\=PORTABLE=\System\MyDefragPortable\"
ShowNormal IdlePriority
START-APPW: D:\=PORTABLE=\System\MyDefragPortable\MyDefrag.exe -r D:\=PORTABLE=\System\MyDefragPortable\Scripts\AutomaticQuick.MyD -v *
;
</SCRIPT>
)#

#( CCleaner_and_MyDefrag
NoActive
SingleInstance
AsLoggedUser
LoadProfile
Action:
<CronScript>
: main
StartIn: "D:\=PORTABLE=\System\CCleanerPortable"
ShowNormal IdlePriority
START-APPW: D:\=PORTABLE=\System\CCleanerPortable\CCleaner.exe /AUTO
;
</SCRIPT>
MyDefrag LAUNCH
)#

#( clean_and_defrag_auto
Time: */10 * * * * *
SingleInstance
regVAR time_counter
Action:
time_counter S>NUM
1+
N>S TO time_counter

time_counter S>NUM
120 >
IF
0
N>S TO time_counter
CCleaner_and_MyDefrag LAUNCH
THEN
)#
[/no]
Автор: brRamires
Дата сообщения: 27.11.2011 21:04

Цитата:
Как определить, что загрузка процессора меньше определённой величины?

В общем, покопался в справке. Пока более оптимальный получается такой вариант:

Код: [no]#( MyDefrag \ быстрая дефрагментация файлов
NoActive
RunMissed: 1
Time: 1 18 * * 1,3,5 *
SingleInstance
Action:
BALLOON: "Внимание" "Выполняется фоновая дефрагментация файлов"
<CronScript>
: main
StartIn: "D:\=PORTABLE=\System\MyDefragPortable\"
ShowNormal IdlePriority
START-APPW: D:\=PORTABLE=\System\MyDefragPortable\MyDefrag.exe -r D:\=PORTABLE=\System\MyDefragPortable\Scripts\AutomaticQuick.MyD -v
;
</SCRIPT>
BALLOON: "Внимание" "Фоновая дефрагментация файлов выполнена"
)#

#( CCleaner_and_MyDefrag \ очистка системы и запуск задачи быстрой дефрагментации
NoActive
RunMissed: 1
AsLoggedUser
LoadProfile
Time: 0 18 * * 1,3,5 *
SingleInstance
Action:
BALLOON: "Внимание" "Выполняются очистка системы от мусорных файлов"
<CronScript>
: main
StartIn: "D:\=PORTABLE=\System\CCleanerPortable"
ShowNormal IdlePriority
START-APPW: D:\=PORTABLE=\System\CCleanerPortable\CCleaner.exe /AUTO
;
</SCRIPT>
MyDefrag LAUNCH
)#

#( auto_time_counter \ каждые 10 минут увеличивает счётчик time_counter в реестре на 1
Time: */10 * * * * *
SingleInstance
regVAR time_counter
Action:
time_counter S>NUM
1+
N>S TO time_counter
)#

#( auto_idle \ запускается при простое компьютера в течение 150 секунд
SingleInstance
regVAR time_counter
Rule: IDLE: 150
Action:
time_counter S>NUM
120 >
IF \ если счётчик time_counter в реестре больше 120 (20 часов чистого рабочего времени системы)
20000 (CPU-USAGE)
60 < \ если нагрузка на процесоор в течение 20 секунд меньше 60%
IF
0
N>S TO time_counter
CCleaner_and_MyDefrag LAUNCH \ запуск задачи очистки и дефрагментации
THEN
THEN
)#
[/no]
Автор: AlikasS
Дата сообщения: 28.11.2011 12:05
brRamires

Цитата:
Правда BALLOON в 7 не выводится. Из CronScript не выводится и в XP.

БАЛУН, в том виде как он описан в хелпе, привязан к иконке крона в трее,
у сервиса в вин7 иконки нет, от сюда и вывод...
(с ХР примерно похожая ситуация для CronScript)
чуть позже добавлю, как можно на свою иконку повесить свой BALLOON

Добавлено:

Код: #( test-start-balloon
NoLog
RunOnce
NoDel
AsLoggedUser
LoadProfile
SingleInstance
Action:
<CronScript>
4 VALUE teaMinutes
0 VALUE teaRest
0 VALUE id
INCLUDE "plugins\win2tray.spf"
: main
S" " 32513 0 LoadIconA ADD-TI TO id
teaMinutes 0
DO
I 2+ 1 DO 50 I * 5500 BEEP LOOP
teaMinutes I - TO teaRest
S" ТАЙМЕР. Осталось %teaRest% минут." EVAL-SUBST id ->CLASS TrayIcon ModifyText
S" Таймер" S" скоро время истечет. Осталось %teaRest% минут." EVAL-SUBST 16 30000 id ->CLASS TrayIcon Balloon
60000 PAUSE
S" " S" " 16 30000 id ->CLASS TrayIcon Balloon
LOOP

1000
2 0 DO 10 1 DO 10 11 I - * + 100 OVER BEEP LOOP
10 1 DO 10 I * - 100 OVER BEEP LOOP LOOP DROP

S" Таймер! Время истекло." 32515 0 LoadIconA id MODIFY-TI

S" Таймер!!" S" Время истекло." 16 30000 id ->CLASS TrayIcon Balloon

100000 PAUSE
id DEL-TI
;
</SCRIPT>
)#

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354

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


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