16.11.2006, 13:52 | #1 |
Злыдни
|
Остановка и запуск сервера из командной строки
После долгих мытарств нашел способ остановки сервера на W2k3:
Остановка - WMIC PATH Process WHERE (Name="ax32serv.exe" AND CommandLine LIKE '%ax32serv%Axapta%') CALL Terminate сервер имеет название Axapta Старт %Path_Server_Ax%\ax32serv.exe "Axapta" |
|
|
За это сообщение автора поблагодарили: raz (5), denny (1). |
16.11.2006, 17:25 | #2 |
Участник
|
Цитата:
|
|
16.11.2006, 17:29 | #3 |
Злыдни
|
Цитата:
Сообщение от gl00mie
С учетом того, что AOS запускается как сервис, прибивание его через WMI равносильно обычному net stop "Service Name" за исключением того, что тут мы вроде как не знаем название сервиса. Это то, что называется "жесткий" останов AOS. Вопрос о "мягком" останове/перезапуске обсуждался тут: Программный перезапуск AOS
|
|
16.11.2006, 18:06 | #4 |
Участник
|
Кстати, вчера официально вышла Microsoft Powershell: http://www.microsoft.com/windowsserv.../download.mspx
Думаю, с её помощью подобные задачки должны решаться на раз. |
|
17.11.2006, 08:25 | #5 |
Злыдни
|
Цитата:
Сообщение от Alex_K
Кстати, вчера официально вышла Microsoft Powershell: http://www.microsoft.com/windowsserv.../download.mspx
Думаю, с её помощью подобные задачки должны решаться на раз. |
|
17.11.2006, 11:29 | #6 |
Участник
|
Цитата:
Предлагаю все-таки остановиться на dll-ке, разработанной AndyD. |
|
17.11.2006, 11:39 | #7 |
Злыдни
|
Цитата:
Сообщение от gl00mie
Что и требовалось доказать. Хотя, признаться честно, в wmi я не силен, но у меня есть большое подозрение, что метод W32_Process::Terminate() выливается в вызов kernel32.TerminateProcess() - жуткий метод прибивания процесса без какой-либо возможности для последнего "подчистить" за собой, закрыть соединения и файлы, собрать мусор и т.п. А Access denied - штатный ответ виндов на попытку применения этой функции к процессам, запущенным как сервисы.
Предлагаю все-таки остановиться на dll-ке, разработанной AndyD. |
|
17.11.2006, 12:30 | #8 |
Участник
|
"Не верю!" Я провел небольшой эксперимент "на кошках" - сервисе фонового копирования файлов для Far Manager:
Код: [C:\]wmic process where (name='bcsvc.exe') call terminate Executing (\\UNWS0818\ROOT\CIMV2:Win32_Process.Handle="2076")->terminate() Method execution successful. Out Parameters: instance of __PARAMETERS { ReturnValue = 0; }; Код: Event Type: Error Event Source: Service Control Manager Event Category: None Event ID: 7034 Date: 17.11.2006 Time: 12:26:49 User: N/A Computer: UNWS0818 Description: The FAR Background Copy Service service terminated unexpectedly. It has done this 1 time(s). For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp. |
|
17.11.2006, 13:25 | #9 |
Злыдни
|
Это Ваше право, но AOS - это ax32mgr.exe, и его я не останавливаю.
А вот, что выдается, если остановить AOS, до остановки сервера: Server Manager: Forcing termination of Object Server Axapta (PID=734) due to termination of the Server Manager. Насколько это лучше? IMHO, ничем. Кстати, при остановке через "мой" способ в Event вообще ничего нет. |
|
17.11.2006, 13:31 | #10 |
Участник
|
ax32mgr это не AOS, а сервер для управления AOS-ами. Сами AOS'ы - ax32serv.
PS в dll управление идет через ax32mgr, причем стопятся или запускаются именно ax32serv PPS При штатном останове AOS сообщает, что он "has been stopped"
__________________
Axapta v.3.0 sp5 kr2 Последний раз редактировалось AndyD; 17.11.2006 в 13:35. |
|
17.11.2006, 13:45 | #11 |
Злыдни
|
Согласен, что работа через dll удобнее и правильнее. Но dll не может управлять удаленными сервисами (может я не прав???). ax32mgr = Axapta Object Server в сервисах. Я говорил о нем, а не о архитектуре Axapta. Извините, если ввел в заблуждение
|
|
17.11.2006, 13:49 | #12 |
Участник
|
Цитата:
Запуск из командной строки? Воспользуйтесь rundll32
__________________
Axapta v.3.0 sp5 kr2 |
|
17.11.2006, 13:58 | #13 |
Участник
|
Смысл сообщения в eventlog был в том, что процесс был просто "прибит" - без возможности нормально завершить свою работу, сообщить о своем уходе тому же service manager'у, нормально закрыть сетевые соединения, сбросить несохраненные данные на диск или дозаписать их в БД, etc. Для наглядности результатов такого завершения работы процесса можно попробовать аналогичным образом "перезапустить" sqlservr.exe...
|
|
17.11.2006, 14:37 | #14 |
Злыдни
|
Стоп. Я ведь не уговариваю использовать мой метод. Не нравится - не пользуйтесь. Меня тоже часто спрашивают: "Почему у тебя на ноутбуке стоит W2K3, а не XP".
Я отвечаю: "Не нравится мне XP" |
|