Перезапуск приложения при закрытии

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

Перезапуск приложения при закрытии

Postby SnkSerge » Wed, 31 Aug 2016, 15:29

Заранее извиняюсь за, наверное, простой вопрос.
Есть одно приложение, которое постоянно виснет и его нужно после этого перезапускать. Имя процесса этого приложения диспетчер задач показывает такое: ms5.x64.mt.exe Для этого сделал следующий скрипт в nncron:
Code: Select all
#( MS
WatchProcStop: "ms5.x64.mt.exe"
Action:
StartIn: "C:\Program Files\Stream Labs\Stream MultiScreen5"
ShowNormal   NormalPriority
START-APP: C:\Program Files\Stream Labs\Stream MultiScreen5\ms5.x64.mt.exe
)#

То есть, при закрытии процесса ms5.x64.mt.exe крон должен заново запустить этот же процесс. Для проверки скрипта вручную закрываю окно приложения, процесс тоже закрывается, но крон приложение заново не запускает. Если запустить задачу в кроне вручную, то запуск приложения происходит. В чем может быть косяк?
Last edited by VoidVolker on Thu, 01 Sep 2016, 22:56, edited 1 time in total.
Reason: Для кода следует использовать bb-тег code
SnkSerge
 
Posts: 3
Joined: Wed, 31 Aug 2016, 15:22

Re: Перезапуск приложения при закрытии

Postby VoidVolker » Thu, 01 Sep 2016, 22:57

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

Re: Перезапуск приложения при закрытии

Postby SnkSerge » Fri, 02 Sep 2016, 08:20

VoidVolker wrote:В режиме запуска ннкрона. Какая ОС? Если ннкрон запущен как сервис, то в данном случае следует использовать опцию AsLoggedUser.

ОС Win 8.1 x64.
Вставил AsLoggedUser:
Code: Select all
#( MS
AsLoggedUser
WatchProcStop: "ms5.x64.mt.exe"
Action:
StartIn: "C:\Program Files\Stream Labs\Stream MultiScreen5"
ShowNormal   NormalPriority
START-APP: C:\Program Files\Stream Labs\Stream MultiScreen5\ms5.x64.mt.exe
)#

Теперь при запуске задания выдает: Не могу получить токен текущего пользователя, а затем: не могу выполнить logon для пользователя. Права доступа для текущего пользователя указал, как написано здесь:
"Примечание: для того, чтобы nnCron мог успешно запускаться не от System, а от имени конкретного пользователя, этот пользователь должен иметь следующие привилегии в системе (см. Control Panel - Administrative Tools - Local Security Settings - Local Policies - User Rights Assignment):
Replace a process level token
Act as part of the operating system
Bypass traverse checking
(пользователь System имеет эти права по умолчанию)."
SnkSerge
 
Posts: 3
Joined: Wed, 31 Aug 2016, 15:22

Re: Перезапуск приложения при закрытии

Postby VoidVolker » Fri, 02 Sep 2016, 16:45

SnkSerge wrote: Не могу получить токен текущего пользователя

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

Re: Перезапуск приложения при закрытии

Postby SnkSerge » Mon, 05 Sep 2016, 13:24

VoidVolker wrote:
SnkSerge wrote: Не могу получить токен текущего пользователя

Это значит, что ннкрон запущен от имени текущего пользователя.
VoidVolker wrote:Если ннкрон запущен как сервис, то в данном случае следует использовать опцию AsLoggedUser.

Хорошо, значит если ннкрон запущен не как сервис, а от имени текущего пользователя, то AsLoggedUser использовать не надо. Но проблему из первого поста это не решает, т.к. я разу использовал команду без AsLoggedUser.
SnkSerge
 
Posts: 3
Joined: Wed, 31 Aug 2016, 15:22

Re: Перезапуск приложения при закрытии

Postby elos » Mon, 05 Sep 2016, 22:37

SnkSerge wrote:Если запустить задачу в кроне вручную, то запуск приложения происходит.

Про ручной запуск задачи:
Примечание: запуская задачу вручную, помните, что тем самым вы принудительно отменяете все условия запуска (Time:, Rule:, Watch*), определенные в задаче. Указание "выполнить задачу вручную" имеет безусловный приоритет над всеми остальными условиями! Если же вы хотите создать задачу, которая бы проверяла определенные условия даже при "ручном" запуске, перенесите условие внутрь раздела Action:.

=====
SnkSerge wrote:Для проверки скрипта вручную закрываю окно приложения, процесс тоже закрывается, но крон приложение заново не запускает.

Если приложение в момент запуска проверяет наличие себя в памяти, то приложение может и не стартовать по заданной ему логике. Есть у меня приложение, которое тоже надо было "защитить" от нечаянного выключения.
Получалось - WatchProcStop: прошёл/отловился, а образ ещё в памяти висит - не успел завершиться. Пришлось контролировать наличие программы в памяти (код у меня под w2k, под win7 и выше крон запускаем как приложение и AsLoggedUser комментируем):
Code: Select all
#( DispatchUp
AsLoggedUser
WatchProcStop: "dispatch.exe"
Rule: PROC-EXIST: "dispatch.exe" NOT
Action:
StartIn: "C:\ELSIS\Dispatch"
ShowNormal   NormalPriority
START-APP: C:\ELSIS\Dispatch\dispatch.exe
)#

У меня работало. А тебе может придётся вставить паузу...
elos
 
Posts: 664
Joined: Tue, 25 Apr 2006, 11:15


Return to nnCron forum (Russian)

Who is online

Users browsing this forum: Exabot [Bot] and 2 guests