Скрипт (js) перезапуска сервиса "Агент сервера 1С:Предприятия 8.2" и "Агент сервера 1С:Предприятия 8.3", Hasp License Manager, с очисткой каталогов snccntx

Задача: перезапуск сервиса 1С, очистка каталогов snccntx и перезапуск HASP LM (для отключения нулевых сессий), HASP Loader.

Данный скрипт выполняет следующие действия:

1.Останавливает службу "Агент сервера 1С:Предприятия 8.2" (как x32, так и x64) (если такая есть)
2. Завершает работу всех клиентов 1С на локальном ПК (если выбрано)
3.Проверяет после остановки службы наличие в памяти незавершенных процессов rphost.exe, rmngr.exe и ragent.exe. Принудительно завершает их.
4.Останавливает службу HASP License Manager (если такая есть), HASP Loader.
5.Очищает каталоги snccntc для каждого из локальных кластеров.
6.Запускает службу HASP LM, HASP Loader и "Агент сервера 1С:Предприятия 8.x".

Все этапы логгируются с обработкой исключительный ситуаций. Лог файл пишется в каталог где находится скрипт.

Никаких параметров задавать не нужно. Запускаете скрипт — получаете результат.

Если будуте запускаете через планировщик заданий — советую использовать cscript.exe вместо wscript.exe.

UPD 06-10-2013

— Исправил ошибку в отображении 10-го месяца в лог-файле
— Исправил завершение незавершившихся процессов останавливаемых служб
— Добавил запуск служб HASP* при исключительной ситуации
— Добавил запуск всех служб при невозможности завершить процесс останавливаемой службы

UPD 11-07-2014

Добавил отдельный скрипт для перезапуска служб 8.3, кроме того, скрипт для 8.3

 — чистит каталог temp пользователя, под которым запущен 1с

 — в случае любой непредвиденной ситуации скрипт будет пытаться запустить службу 1с пока не сможет этого сделать

 — содержит мелкие улучшения

UPD 01-04-2024

 — скрипт для 8.3 завершает еще и клиентов 1с, с запросом при ручном запуске и без запроса через параметр командной строки

 — мелкие улучшения

Дальнейшего развития скрипта для 8.2 не предполагается.

UPD 01-06-2024

 — Реализована поддержка UAC при ручном запуске. Если запускаете из планировщика с ключом командной строки — запускайте из-под системной учетной записи — там повышение привилегий не требуется.

 — Переделал скрипт для 8.2 из сочного и свежего скрипта для 8.3

UPD 17-08-2024

 — Добавил поддержку Windows Server 2012

UPD 20-11-2024

— Сделал проверку UAC Elevation для всех ОС без учёта версии (будет работать только на Windows >=2008)

UPD 14-06-2024

— Исправил ошибку, при которой в случае автоматического выполнения перезапуска (без подтверждения) проверка на запуску службы 1С никогда не завершалась.

UPD 01-08-2024

разобрался с пропуском незавершаемых процессов 1С, находящихся с статусе suspended.

— причесал код и чуть-чуть логику. Там, где смог разобраться ))

UPD 22-10-2024

bugfix

39 Comments

  1. Spektr
    Если будуте запускаете через планировщик заданий — советую использовать cscript.exe вместо wscript.exe.

    В планировщике заданий я могу выбрать скриптт 1c_restarter.js или программу cscript.exe

    Как запустить скрипт исползуя cscript.exe?

    Reply
  2. Shrek2015

    неплохая штука 🙂 спасибо автору

    Reply
  3. MrWonder

    (1) Spektr, как-то так %windir%system32cscript.exe «путь_к_скрипту1c_restarter.js»

    (2) Shrek2015, Пожалуйста 🙂

    Reply
  4. Spektr

    Благодарю за ответ. Попробую.

    Reply
  5. Alonarista

    Как насчет работы с двумя одновременно работающими серверами 1с?

    Например 8.1 и 8.2?

    Reply
  6. MrWonder

    (5) Alonarista, будет перезагружен только 8.2

    Reply
  7. frai

    А можно подробней зачем чистить каталог «snccntc» для тех, кто не читает ЖКК?

    Reply
  8. MrWonder

    (7) frai, что такое ЖКК?

    Чистка SNCCNTX помогает от проблем с программными ключами, от проблем с сеансами пользователей.

    Reply
  9. CaSH_2004

    (0) Подскажите а в каких случаях это требуется? Или с ним такие же проблемы как с кэшем пользователя.

    Reply
  10. MrWonder

    (9) CaSH_2004, Точно у нас проявлялись две проблемы:

    1. Слетали программные лицензии — переставали выдаваться сервером приложений.

    2. Возникала проблема с определенными сессиями (глубоко проблему не диагностировал). Проявляется когда при просмотре сессий в оснастке сервера приложений выскакивает ошибка с предложением продолжить, и все — сессии дальше косячной не отображаются. Еще проявляется при обходе сессий другим моим скриптом, который считает количество лицензий на кластере (и потом передает в систему мониторинга Zabbix) — там просто фатальный вылет.

    Reply
  11. Abadonna

    Немного offtop, кто сталкивался с такой проблемой?

    RMNGR.EXE


    Суть проблемы:

    Проблема вызывается висящим в памяти процессом rmngr.exe, который блокирует доступ к папкам сервера 1 С предприятия и не дает нормально запускаться службе агента 1С предприятия.

    Говорят, это поправили в тестовой платформе 8.2.15.315.

    Помогает ручное завершение этого процесса через диспетчер задач и перезапуск службы агента сервера 1С предприятия.

    Для этого надо залогиниться в систему после перезагрузки и проделать все манипуляции ручками.

    P.S. Может в 8.2.15.315 и далее и решили, а вот на 8.3.3.687 я её поимел по всей красе 😉

    Решил, конечно, но «Шурик, это же не наш метод! В то время, когда космические корабли бороздят…»

    Reply
  12. DitriX

    (11) я вот тоже сегодня статью обновил (http://infostart.ru/public/196686/)

    почитай, там тоже есть до утра приколов.

    Тот скрипт который ты написал, он лечит кучу проблем, по идее. Но проблемы не только у тебя 🙂

    Кстати — проверь драйвера, особенно на видик.

    И почитай дампы от 1С.

    Reply
  13. MrWonder

    (12) DitriX, Спасибо, мне полезна информация. Скоро буду ваять скрипт перехода СП 1с с 8.2 на 8.3. Обновление релиза 8.2 уже есть, не руками же на 90 серверах фигарить ))

    Reply
  14. DitriX

    (13) но ты учти, что тебе потом руками ковырять эти конфы 🙂

    А часть багов 1С признала, но к исправлению только в 8.3.4 планирует….

    Reply
  15. MrWonder

    (14) DitriX, Неа) мне не надо. Есть штат сотрудников, которые протестируют конфы перед переходом, и поправят, при необходимости.

    Reply
  16. v.l.

    MrWonder, а выложи, пожалуйста, текст скрипта в статью. Если не сложно.

    Reply
  17. MrWonder

    (16) Vladal, см. лс.

    Reply
  18. kernelio

    (17) выложи и мне скрипт, пожалуйста.

    Reply
  19. sommid

    спасибо. уже немного поднадоели зависающие процессы rmngr.exe

    Reply
  20. Smoking1C

    Запускаю скрипт, дает ошибка не совместимости типа, 8.3 самая свежая стоит. в чем проблема?

    Reply
  21. sommid

    (20) качал пример для 8.2 и сам исправлял в нужных местах на 8.3, отключал ненужное, вроде все интуитивно понятно, работает.

    Reply
  22. MrWonder

    (20) Nechipury, что в логе?

    Reply
  23. vbuots

    Спасибо большое за такой качественный скрипт. Где же Вы были хотя бы год назад ;(. Использую теперь только его!!!

    Reply
  24. MrWonder

    (23) vbuots, На здоровье)), рад что Вам пригодилось.

    Reply
  25. afanasko

    Большое спасибо! Понадобился скрипт для корректной остановки сервера 1С перед выключением сервака. Ваша разработка идеально подошла. Убрал строчки с запуском и поместил скрипт в планировщик — работает как часы!

    Reply
  26. zombi81

    А если в базе работают пользователи, насколько корректно будет использовать такой скрипт?

    Reply
  27. zombi81

    Или выполняются регламентные задания.

    Reply
  28. zombi81

    Забыл подписаться на ответы.

    Reply
  29. MrWonder

    Если в базе работают пользователи то сеансы их работы будут завершены, регламентные, соответственно, тоже.

    Проблем ни разу не было с этим )

    Reply
  30. v3rter

    Хотел написать в личку, но что-то пошло не так и не получилось. Не в обиду: закиньте текст публикации в word на предмет красных волнистых линий.

    Reply
  31. MrWonder

    (30) v3rter, Спасибо!

    Reply
  32. _Shadow_

    (31) поделитесь скриптом, если не жалко.

    Не хочется изобретать велосипед, а с финансами сейчас совсем беда.

    Reply
  33. isn

    Подскажите, при запуске скрипта на каждом кластере серверов, «глюков в работе не возникало»?

    Reply
  34. MrWonder

    (33) isn, поясните, что Вы имеете ввиду под «запуске скрипта на каждом кластере серверов»? Очистка сеансовых данных для нескольких кластеров одного СП 1с предусмотрена. Пришлите лог.

    Reply
  35. zoytsa

    День добрый!

    А на Сервер 8.1 сложно будет адаптировать скрипт самому?

    Reply
  36. MrWonder

    (35) zoytsa, технически не очень, надо в заголовке поменять переменную query_1c_service, чтобы выбирал службу 1с 8.1. А вот на счет очистки каталогов snccntc надо смотреть, я не знаю о наличии и размещении каталога сеансовых данных в 8.1 — в коде вызов функции delete_snccntx

    Reply
  37. mnemchinov

    При работе через планировщик выдал на экран такое сообщение: Please, contact zhuchkov… attaching this screenshot — exception while executing: cmd.exe /c C:Windowssystem32 askkill.exe /f /pid 5916

    Сам скрипт при этом ждал пока ему нажмут ОК. Замечал такое поведение пару раз.

    Reply
  38. MrWonder

    (37) mnemchinov, какая ОС, включен ли UAC, ключи стоят аппаратные в сервере?

    Reply
  39. sibmen

    (17) Добрый человек поделись скриптом ,пожалуйста, очень надо!

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *