Вопрос про выход из спящего режима

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

Вопрос про выход из спящего режима

Postby nikitina » Mon, 18 Feb 2008, 12:25

Добрый день!

У меня такая ситуация. Комп работает весь день, потом вечером уходит в спящий режим. Ночь спит. Потом утром просыпается и запускает прогу. Но как мне сделать так, чтобы в субботу вечером он уходил в спящий режим, в воскресенье не просыпался, а проснулся только утром в понедельник.
Я, сделал такой скрипт, который комп уводит в спящий режим (POWER-HIBERNATE) и через н-ное количество часов с помощью "WakeAfter" просыпается и запускает программу.
Вот мой скрипт:

#CRONTAB FILE
# Classic crontab format:
# Minutes Hours Days Months WeekDays Years Command
# see 'example.tab'

#( purge-cron-log
Time: 0 12 * * 5 *
Action: PURGE-OLD: "log\*.log" 7
)#

#( Просыпание_PC
WatchSuspend
Action:
WakeAfter: 00:01
)#

#( Засыпание_PC
RunOnce
NoDel
Time: 27 14 4 7 * 2007
Action:
KILL: "GOM.exe"
PAUSE: 5000
POWER-HIBERNATE
)#

#( Авто_запуск
WatchResumeAuto
Action:
StartIn: "F:\"
START-APP: F:\word.exe

)#

Помогите, плиз!!!
nikitina
 
Posts: 11
Joined: Mon, 18 Feb 2008, 12:12

Re: Вопрос про выход из спящего режима

Postby SeMa » Mon, 18 Feb 2008, 16:04

Помогите, плиз!!!

А что такое
WakeAfter: 00:01
?
это же проснуться через 1 минуту.
Таймер просыпания взводится на время, но не на дату, поэтому нужно еще одну задачу на проверку дня. Хотя можно и объединит в одну.
У меня настроено так:
Code: Select all
#( CLASSIC-TASK-#-Suspend_Timer
\ предотвращение засыпания
\ вызывается из задачи "подъем"
\ требуется плагин rstimer.spf
 NoActive
SingleInstance
Action:
BEGIN
ES_SYSTEM_REQUIRED ResetSuspendTimer
PAUSE: 00:02
AGAIN
)#

#( подъем
WatchSuspend
Action:
PROC-EXIST: "OUTLOOK.EXE"
IF WIN-CLOSE: "*- Microsoft Outlook" THEN
PROC-EXIST: "thunderbird.exe"
IF PROC-CLOSE: "thunderbird.exe" THEN
PROC-EXIST: "flashget.exe"
IF PROC-CLOSE: "flashget.exe" THEN
WakeAt: 07:30
TRAY-REFRESH
CLASSIC-TASK-#-Suspend_Timer LAUNCH
)#

#( спать-в-выходной
\ после выполнения работы "уснуть" в выходные
Time: 0 9 * * 6,7
\ исключение - 1-е число
Rule: IDLE: 300 Day@ 1 <> AND
Action:
  POWER-HIBERNATE
)#

#( после_сна
AsLoggedUser
WatchResumeAuto
Action:
PAUSE: 15000
THINT: "Привет, хозяин ;)!" 20
ShowMinimized   NormalPriority
START-APP: C:\Program Files\Microsoft Office\Office11\OUTLOOK.EXE
PAUSE: 00:01
ShowMinimized   NormalPriority
START-APP: C:\Program Files\Mozilla Thunderbird\thunderbird.exe
)#
Компьютер ─ устройство, разработанное для ускорения и автоматизации человеческих ошибок
User avatar
SeMa
 
Posts: 637
Joined: Fri, 15 Apr 2005, 12:49
Location: Украина

Re: Вопрос про выход из спящего режима

Postby nikitina » Mon, 18 Feb 2008, 16:37

Спасибо за ответ!

Но, я, как самый настоящий чайник не могу понять, где конкретно у тебя прописано, что у в выходные просыпаться не надо? Вот как бы ты вставил скрипт в мой файл со следующей задачей.
Будние дни: проснуться в 8.00, запустить программу, заснуть в 21.00, . В субботу проснуться в 8.00, запустить прогу, заснуть в 21.00, . Воскресенье не просыпаться вообще. В понедельник проснуться в 8.00 и опять недельный цикл.

Помогите, вот в этих тонкостях не могу разобраться. Все остальное настроил и работает, а вот чтобы в воскресенье не просыпался сломал голову.

Заранее благодарен!
nikitina
 
Posts: 11
Joined: Mon, 18 Feb 2008, 12:12

Re: Вопрос про выход из спящего режима

Postby SeMa » Mon, 18 Feb 2008, 18:22

nikitina wrote:Помогите, вот в этих тонкостях не могу разобраться. Все остальное настроил и работает, а вот чтобы в воскресенье не просыпался сломал голову.

В задаче "подъем" устанавливается флаг "спать?", зависящий от дня недели. Если "проснулись" в воскресенье, ставится TRUE и в 8:05 ПК снова "засыпает".
Code: Select all
#( CLASSIC-TASK-#-Suspend_Timer
\ предотвращение засыпания
\ вызывается из задачи "подъем"
\ требуется плагин rstimer.spf
NoActive
SingleInstance
Action:
BEGIN
ES_SYSTEM_REQUIRED ResetSuspendTimer
PAUSE: 00:02
AGAIN
)#

#( подъем
0 VALUE спать?
WatchSuspend
Action:
WakeAt: 08:00
15000 PAUSE
Day@ 7 =
IF
  TRUE TO спать?
ELSE
  FALSE TO спать?
  TRAY-REFRESH
  CLASSIC-TASK-#-Suspend_Timer LAUNCH
THEN
)#

#( после_сна
AsLoggedUser
Time: 10 8
Action:
StartIn: "F:\"
START-APP: F:\word.exe
)#

#( спать-в-выходной
\ "уснуть" в воскресенье
Time: 5 8 * * 7
Rule: спать?
Action:
  POWER-HIBERNATE
)#

#( Засыпание_PC
Time: 0 21
Action:
KILL: "GOM.exe"
PAUSE: 5000
POWER-HIBERNATE
)#
Компьютер ─ устройство, разработанное для ускорения и автоматизации человеческих ошибок
User avatar
SeMa
 
Posts: 637
Joined: Fri, 15 Apr 2005, 12:49
Location: Украина

Re: Вопрос про выход из спящего режима

Postby nikitina » Tue, 19 Feb 2008, 05:35

А во так я не решу проблему:

#( Просыпание_PC
Time: * * * * 1-6 *
WatchSuspend
Action:
WakeAt: 08:00
)#

То есть получается, что завод на таймер компа происходит по всем дням кроме воскресенья. Я, пробовал со вторником вроде работает, но как будет в реальности не знаю. Что по этому поводу думает честной народ?
nikitina
 
Posts: 11
Joined: Mon, 18 Feb 2008, 12:12

Re: Вопрос про выход из спящего режима

Postby SeMa » Tue, 19 Feb 2008, 17:03

nikitina wrote:А во так я не решу проблему:

#( Просыпание_PC
Time: * * * * 1-6 *
WatchSuspend
Action:
WakeAt: 08:00
)#

То есть получается, что завод на таймер компа происходит по всем дням кроме воскресенья. Я, пробовал со вторником вроде работает, но как будет в реальности не знаю. Что по этому поводу думает честной народ?

Сам подумай!
В субботу таймер взведется НА 8:00! Когда произойдет "пробуждение"? Правильно, в воскресенье. И все. Поскольку в воскресенье взвода не будет, то в понедельник ПК не проснется (после засыпания в 21:00 по задаче "Засыпание_PC").
Компьютер ─ устройство, разработанное для ускорения и автоматизации человеческих ошибок
User avatar
SeMa
 
Posts: 637
Joined: Fri, 15 Apr 2005, 12:49
Location: Украина

Re: Вопрос про выход из спящего режима

Postby AlikasS » Wed, 20 Feb 2008, 05:24

в замен задачи от SeMa
Code: Select all
#( подъем
WatchSuspend
Action:
WDay@ 6 <
IF \ если день меньше субботы, будильник на след.день на 8-00
   WakeAt: 08:00
ELSE \ если день = суббота или воскресенье
   7 WDay@ - \ осталось полных суток до понедельника
   24 * \ осталось полных суток до понедельника ( в часах)
   60 * \ осталось полных суток до понедельника  (в минутах)
   1440 TimeMin@ - \ осталось минут до конца текущего дня
   + \ осталось минут до понедельника от текущего момента (в минутах)
   8  60 * 0 + \ где 8 - час просыпания в понедельник, 0 - минута просыпания
   + \ осталось минут до понедельника 8-00 от текущего момента
   60000 * \ осталось милисекунд до понедельника 8-00
   WakeAfter
THEN
CLASSIC-TASK-#-Suspend_Timer LAUNCH
)#

сам не проверял :-D
User avatar
AlikasS
 
Posts: 1437
Joined: Wed, 28 Jun 2006, 05:39
Location: Khabarovsk

Re: Вопрос про выход из спящего режима

Postby AlikasS » Wed, 20 Feb 2008, 07:15

еще одна задача в замен от SeMa
вдруг пользователь задержиться после 21-00 на работе
Code: Select all
#( Засыпание_PC
SingleInstance
\ если нет активности пользователя с 21-00 до 08.00 более 10 минут
\ заблокировать и усыпить комп
Rule: IDLE: 600 INTERVAL: 08:00-21:00 NOT AND
NoLog
Action:
KILL: "GOM.exe"
PAUSE: 5000
LockWorkStation DROP
POWER-FORCE
POWER-HIBERNATE
THEN
)#
User avatar
AlikasS
 
Posts: 1437
Joined: Wed, 28 Jun 2006, 05:39
Location: Khabarovsk

Re: Вопрос про выход из спящего режима

Postby SeMa » Wed, 20 Feb 2008, 12:53

AlikasS wrote:в замен задачи от SeMa
...
сам не проверял :-D

Оригинально :yawinkle: . Не додумался :rolleyes:
Компьютер ─ устройство, разработанное для ускорения и автоматизации человеческих ошибок
User avatar
SeMa
 
Posts: 637
Joined: Fri, 15 Apr 2005, 12:49
Location: Украина

Re: Вопрос про выход из спящего режима

Postby AlikasS » Wed, 20 Feb 2008, 13:11

еще можно вести слово:
Code: Select all
<%
: WakeAtWd { a u N -- } ( "часы:минуты" деньнедели -- )
N WDay@ -  DUP 0=
IF DROP
   \ день недели совпал
   a u SH:M>Min TimeMin@ -
   DUP 0<
   IF \ день этот но время прошло, значит через неделю
   [ 7 1440 * ] LITERAL +
   THEN
   60000 *
   WakeAfter
ELSE
   DUP
   0<
   IF
   7 + 1440 *
      a u SH:M>Min TimeMin@ - + 60000 * WakeAfter
   ELSE
   1440 *
      a u SH:M>Min TimeMin@ - + 60000 * WakeAfter
   THEN
THEN
;

: WakeAtWd: eval-string, number, POSTPONE WakeAtWd ; IMMEDIATE

\ S" 08:30" 5  WakeAtWd
\ WakeAtWd: "08:30" 5 \ разбудить в 8-30 в ближайшую пятницу
\ WakeAtWd: "17:00" 1 \ разбудить в 17-00 в ближайший понедельник

\ долгоиграющие WakeAtWd: :-)
\ WakeAtWd: "17:00" 8 \ разбудить в 17-00 во второй понедельник ( 1 + 7 )
\ WakeAtWd: "17:00" 10 \ разбудить в 17-00 во вторую среду ( 3 + 7 )
%>

тогда твоя задача будет выглядеть:
Code: Select all
#( подъем
WatchSuspend
Action:
WDay@ 6 <
IF \ если день меньше субботы, будильник на след.день на 8-00
   WakeAt: 08:00
ELSE \ если день = суббота или воскресенье
WakeAtWd: "08:00" 1
THEN
\ CLASSIC-TASK-#-Suspend_Timer LAUNCH \ закомментировал, у me такой нет
)#
Last edited by AlikasS on Wed, 02 Jul 2008, 15:25, edited 1 time in total.
User avatar
AlikasS
 
Posts: 1437
Joined: Wed, 28 Jun 2006, 05:39
Location: Khabarovsk

Re: Вопрос про выход из спящего режима

Postby AlikasS » Wed, 20 Feb 2008, 15:21

еще одно слово для просыпания
Code: Select all
<%
: WakeAtDate
0 YMDHMS>FT FT-CUR FT- FT>SEC D>S 1000 * WakeAfter
;
: WakeAtDate:  number, number, number, number, number, POSTPONE WakeAtDate ; IMMEDIATE
\ 2008 02 22 12 00 WakeAtDate \ проснуться 12-00 22 февраля 2008
\ WakeAtDate: 2008 02 22 12 00
%>
непонятно только, как далеко можно откладывать "сон".
Code: Select all
#( проверить_просыпание
\ NoActive
WatchSuspend
NoLog
Action:
\ проснуться в 22-00 20 февраля 2008
WakeAtDate: 2008 02 20 22 00
)#
User avatar
AlikasS
 
Posts: 1437
Joined: Wed, 28 Jun 2006, 05:39
Location: Khabarovsk

Re: Вопрос про выход из спящего режима

Postby nikitina » Tue, 26 Feb 2008, 06:36

Народ, помогите разобраться. Вот мои скрипты.

#( Просыпание_PC
Time: * * 20,21,22,26,27,28,29 2 * *
WatchSuspend
Action:
WakeAt: 07:55
100 MIXER-VOLUME!
)#

#( Засыпание_PC
Time: 10 17 * * 1-5 *
Action:
POWER-HIBERNATE
)#

#( Авто_запуск_проигрывателя
WatchResumeAuto
Action:
StartIn: "C:\"
START-APP: C:\Program Files\AIMP2\AIMP2.exe
)#


Но, сегодня 26.02 компьютер не проснулся после спячки. Какие у меня здесь ошибки есть. Впереди опять праздники и хотелось бы на март задать все рабочие дни, когда комп вечером засыпает, а утром просыпается и нерабочие дни, когда комп не просыпается, а просыпается в ближайший рабочий день. Например восьмое марта: с 3-го по 7 марта комп вечером засыпает, утром встает, но 8 и 9 марта комп не просыпается, а просыпается только 10 марта.
Есть какие-то мысли на этот счет?
nikitina
 
Posts: 11
Joined: Mon, 18 Feb 2008, 12:12

Re: Вопрос про выход из спящего режима

Postby AlikasS » Tue, 26 Feb 2008, 08:42

nikitina wrote:Народ, помогите разобраться. Вот мои скрипты.
Code: Select all
#( Просыпание_PC
Time: * * 20,21,22,26,27,28,29 2 * *
WatchSuspend
Action:
WakeAt: 07:55
100 MIXER-VOLUME!
)#

#( Засыпание_PC
Time: 10 17 * * 1-5 *
Action:
POWER-HIBERNATE
)#
Но, сегодня 26.02 компьютер не проснулся после спячки. Какие у меня здесь ошибки есть. Впереди опять праздники и хотелось бы на март задать все рабочие дни, когда комп вечером засыпает, а утром просыпается и нерабочие дни, когда комп не просыпается, а просыпается в ближайший рабочий день. Например восьмое марта: с 3-го по 7 марта комп вечером засыпает, утром встает, но 8 и 9 марта комп не просыпается, а просыпается только 10 марта.
Есть какие-то мысли на этот счет?

в пятницу 22.02 в 17.10 сработала задача Засыпание_PC,
в пятницу же запустилась задача Просыпание_PC и подняла комп в субботу 07-55.

в субботу , воскресенье, комп работал т.к. Засыпание_PC в эти дни не работает

понедельник 25.02 комп работал и в 17-10 сработала задача Засыпание_PC,
а задача Просыпание_PC не сработала т.к. 25.02 не входит в условие
и соответственно будильник на 26.02 07-55 не поставился.
комп уснул навсегда :-D
User avatar
AlikasS
 
Posts: 1437
Joined: Wed, 28 Jun 2006, 05:39
Location: Khabarovsk

Re: Вопрос про выход из спящего режима

Postby nikitina » Tue, 26 Feb 2008, 15:29

Ничего не понятно. Комп уснул по скритпу 22.02. Проснуться он должен в 7.55 26 февраля. А, он не проснулся. Почему? Взвод на просыпание ведь произошел еще в пятницу. Комп пропустил 23, 24 и 25 февраля. В эти дни комп не выходил из спящего режима. А, 26.02 должен, но не вышел.

в пятницу 22.02 в 17.10 сработала задача Засыпание_PC,
в пятницу же запустилась задача Просыпание_PC и подняла комп в субботу 07-55.


Ну, не поднимался комп в субботу 23.02. Или понятие поднялся это очень ориентировочно? Получается, что здесь #( Засыпание_PC
Time: 10 17 * * 1-5 *
нужно выделить всю неделю, чтобы завод происходил на время просыпания?

Может, я, что-то не догоняю, но объясните как решить проблему!
nikitina
 
Posts: 11
Joined: Mon, 18 Feb 2008, 12:12

Re: Вопрос про выход из спящего режима

Postby SeMa » Tue, 26 Feb 2008, 16:10

nikitina wrote:Ничего не понятно. Комп уснул по скритпу 22.02. Проснуться он должен в 7.55 26 февраля. А, он не проснулся. Почему? Взвод на просыпание ведь произошел еще в пятницу. Комп пропустил 23, 24 и 25 февраля. В эти дни комп не выходил из спящего режима. А, 26.02 должен, но не вышел.

НЕ ДОЛЖЕН. Аргументом слова WakeAt служит ВРЕМЯ, а не ДАТА/время. Где в этой команде указано типа WakeAt: 26-02-2008/07:55 ? Нигде! Там указано ТОЛЬКО ВРЕМЯ. Вот в ближайшее время 07:55 и произойдет пробуждение.
nikitina wrote:Ну, не поднимался комп в субботу 23.02.

Точно? Ты в логах смотрел? Если не просыпался, то, возможно, комп был полностью обесточен (выключен из розетки, отключен УПС, пропадало питание и т.п.). Чудес не бывает. У меня уже 4 года на работе ПК работает на задачах, которые я в начале приводил, и сбои случались именно по причинам пропадания питания.
Предписанные крону задачи он выполняет только тогда, когда сам работает (как это ни парадоксально :rolleyes: :wink: ). А для этого должен работать ПК, ОС и сам крон должен быть загружен. А от одних мыслей, предположений и желаний это не произойдет. Твои задачи крон выполняет в точности с описанным. Не будут они работать так, как тебе хочется. Почему - тебе объяснили.
AlikasS дал отличный пример (попробую свои скрипты переделать). Тебе трудно его проверить?
Компьютер ─ устройство, разработанное для ускорения и автоматизации человеческих ошибок
User avatar
SeMa
 
Posts: 637
Joined: Fri, 15 Apr 2005, 12:49
Location: Украина

Next

Return to nnCron forum (Russian)

Who is online

Users browsing this forum: No registered users and 3 guests

cron