Как я узнаю в Windows о сервисе, написанном на Python?

StackOverflow https://stackoverflow.com/questions/34328

  •  09-06-2019
  •  | 
  •  

Вопрос

В другой вопрос я вчера написал, я получил очень хороший совет о том, как скрипт Python может быть запущен как служба в Windows. Что меня оставило, интересно: как Windows знает о службах, которыми можно управлять в собственных инструментах («службы» в «административных инструментах»). И. е. что такое эквивалент Windows для размещения сценария запуска / остановки в /etc/init.d под Linux?

Это было полезно?

Решение

Как и в большинстве "осведомленных" в Windows, ответ - «Реестр».

Ознакомьтесь с этой статьей базы знаний Майкрософт: http://support.microsoft.com/kb / 103000

Найдите " программу Win32, которая может быть запущена контроллером служб и подчиняется протоколу управления службами. " Это тот вид услуг, который вас интересует.

Регистрация службы (содержимое KEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ myservice) содержит информацию о сервисе, включая такие вещи, как расположение исполняемого файла, что делать в случае сбоя (остановка ОС?), какие сервисы должны быть запущены до этого, от какого пользователя он запускается.

Что касается протокола управления службами, main () вашей программы должен вызывать вызов Windows API, настраивая обратные вызовы для запуска, остановки, приостановки для вашей службы. Что вы делаете в этих обратных вызовах, зависит только от вас.

Другие советы

Вот код для установки python-скрипта как сервиса, написанный на python:)

http://code.activestate.com/recipes/551780/

Этот пост также может помочь вам:

http://essiene.blogspot.com/2005/04/ питон-окна-services.html

Не связывайтесь с реестром напрямую. Используйте инструмент командной строки SC. А именно, SC CREATE

    DESCRIPTION:
        SC is a command line program used for communicating with the
        NT Service Controller and services.
    USAGE:
        sc  [command] [service name]  ...

        The option  has the form "\\ServerName"
        Further help on commands can be obtained by typing: "sc [command]"
        Commands:
          query-----------Queries the status for a service, or
                          enumerates the status for types of services.
          queryex---------Queries the extended status for a service, or
                          enumerates the status for types of services.
          start-----------Starts a service.
          pause-----------Sends a PAUSE control request to a service.
          interrogate-----Sends an INTERROGATE control request to a service.
          continue--------Sends a CONTINUE control request to a service.
          stop------------Sends a STOP request to a service.
          config----------Changes the configuration of a service (persistant).
          description-----Changes the description of a service.
          failure---------Changes the actions taken by a service upon failure.
          qc--------------Queries the configuration information for a service.
          qdescription----Queries the description for a service.
          qfailure--------Queries the actions taken by a service upon failure.
          delete----------Deletes a service (from the registry).
          create----------Creates a service. (adds it to the registry).
          control---------Sends a control to a service.
          sdshow----------Displays a service's security descriptor.
          sdset-----------Sets a service's security descriptor.
          GetDisplayName--Gets the DisplayName for a service.
          GetKeyName------Gets the ServiceKeyName for a service.
          EnumDepend------Enumerates Service Dependencies.

        The following commands don't require a service name:
        sc   
          boot------------(ok | bad) Indicates whether the last boot should
                          be saved as the last-known-good boot configuration
          Lock------------Locks the Service Database
          QueryLock-------Queries the LockStatus for the SCManager Database
    EXAMPLE:
        sc start MyService

Вы можете использовать srvany.exe из Windows NT Resource Kit для создания пользовательской службы, которая будет отображаться в инструментах администратора ...

http://support.microsoft.com/kb/137890

Я использую этот метод для запуска tracd (скрипт / сервер python) для trac.

Вот несколько очень четких инструкций: http://www.tacktech.com/ display.cfm? TTiD = 197

Это требует некоторого редактирования реестра (очень минимального и простого), но позволит вам сделать любую командную строку / скрипт службой Windows.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top