1. XYNTService的使用
1.1. 介绍 1.2. XYNTService
2. 用XYNTService把Python程序变为服务

1. XYNTService的使用

1.1. 介绍

通常,NT服务是控制台应用程序,它没有消息循环。不必等到用户登陆电脑,NT服务便能启动,并且在用户登出之后,它也不会停止运行。然而,许多现存的ActiveX控件很难,有时候根本不可能在控制台程序中使用。 可以用Windows程序的形式直接写NT服务,但是XYNTService提供一个更简单的解决方法。本文配套源代码是一个简单的NT服务程序,它能够启动和关闭其它作为服务的程序。所有需要做的是安装这个服务,修改.ini文件。下面是使用XYNTService的好处:

1.2. XYNTService

XYNTService.exe是此NT服务程序可执行文件的名字,可以在此下载。

默认情况下,在电脑重启时,安装的服务便会自动启动。你也可以使用服务图标从控制面板启动和关闭服务。服务启动时,它将会一个挨一个地创建在XYNTService.ini文件中定义的所有进程。服务关闭时,它将会终止这些进程(以相反顺序)。XYNTService.ini文件应该和可执行文件放在相同的目录。下面是此文件的一个例子。

[Settings]

ServiceName = XYNTService

ProcCount = 3

CheckProcess = 30

[Process0]

CommandLine = c:/MyDir/XYRoot.exe

WorkingDir = c:/MyDir

PauseStart = 1000

PauseEnd = 1000

UserInterface = Yes

Restart = Yes

[Process1]

CommandLine = c:/MyDir/XYDataManager.exe

WorkingDir = c:/MyDir

PauseStart = 1000

PauseEnd = 1000

UserInterface = Yes

Restart = Yes

[Process2]

CommandLine= java XYRoot.XYRoot XYRootJava.ini

UserInterface = No

Restart = No

ServiceName属性指定想要为此NT服务使用的名字,默认名字为XYNTService。如果复制可执行文件和.int文件到不同的目录,在.int文件中修改ServiceName属性,即可安装和配置一个不同的服务。

ProcCount属性指定想要此服务创建的进程的数量。节[Process0]、[Process1]等定义了相关进程的属性。如你所见,此例中要创建3个进程, XYRoot.exe,XYDataManager和java是程序的名称,你可以为每个进程在CommandLine属性指定参数。必须在CommandLine属性为对应进程指定可执行文件的完整路径,除非可执行文件在系统路径。

CheckProcess属性指定是否检查XYNTService启动的进程,也指定了检查的频率。如果此属性的值为0,便不进行检查。如果属性的值为30,则每经30分钟XYNTService将查询操作系统以查看它启动的进程是否还在运行,如果进程的Restart属性值(后门解释)定义为Yes,则将终止的重新启动。此属性的默认值(如果你没有指定它)是60。

WorkingDir属性是当前进程的工作目录。如果你没有指定此属性,当前进程的工作目录将会是X:/winnt/system32。PauseStart属性是服务在启动当前进程后将等待的时间(以毫秒为单位)。在下一个进程需要依靠前一个进程的情况下此选项非常有用。例如,第二个进程不得不连接到第一个进程以便在第一个进程完成初始化后它再运行。如果你没有指定PauseStart属性,默认值将是100毫秒。

当XYNTService关闭时,它将首先向它创建的进程投递WM_QUIT消息,然后调用Win32函数TerminateProcess。PauseEnd属性是服务在调用TerminateProcess之前等待的时间(以毫秒为单位)。此属性可以用来给进程清除和关闭的机会。如果你没有指定PauseEnd属性,默认值将是100毫秒。 UserInterface属性控制一个登陆用户是否能够看到XYNTService创建的进程。然而,仅当XYNTService运行在本地系统帐户下时才起作用,默认就是这样的。在这种情况下,XYNTService创建的进程将不能访问特定用户的设置。你可以配置XYNTService运行在一个用户帐户下,在控制面板中很容易做到这一点(双击服务图标,然后在安装的服务列表中双击XYNTService弹出配置对话框)。

Restart属性用来决定你是否想要XYNTService重新启动终止的进程。如果此属性是No(这是默认值),那么对应进程将不会被重启。如果是Yes,那么终止的进程将会被XYNTService重新启动。启动终止进程的频率由上面的CheckProcess属性指定。

你可以从命令行反弹(停止和重启).int文件中定义的任何进程。例如,如下命令: XYNTService -b 2 将停止和重新启动.ini中[Process2]节定义的进程。 XYNTService也可以用来从命令行启动和停止其它服务。下面是启动(run)和停止(kill)其它服务的命令。 XYNTService -r NameOfServiceToRun XYNTService -k NameOfServiceToKill

特别的,你可以在命令行使用上面的命令启动和停止XYNTService自身。请注意,你不能不带参数启动XYNTService。

运行XYNTService时出现的所有错误都将被写入日志文件,此文件与可执行文件在相同目录下。日志文件中的出错代码是GetLastError API返回的十进制数字,可以在MSDN中查看详细信息。

2. 用XYNTService把Python程序变为服务

经过上面的介绍可以看出XYNTService可以把任何一个可执行程序作为一个服务来启动,所以Python程序当然也可以了。下面给一个简单的例子:

[Settings]

ServiceName=So.net

CheckProcessSeconds = 10

[Process0]

CommandLine = C:/python25/python.exe c:/11.py

WorkingDir= C:/

PauseStart= 1000

PauseEnd= 1000

UserInterface = No

Restart = Yes

安装So.net服务:XYNTService.exe -i。

经过上面配置后,可以在没有登录的时候就可以直接启动So.net服务了,So.net服务会调用c:/11.py程序。并且每10秒检测11.py进程是否激活,如果不活动则重新启动它。

用XYNTService把Python程序变为服务相关推荐

  1. python程序发布 ubuntu_在ubuntu16.04的虚拟环境中运行Python程序作为服务

    我正在尝试让一个Flask+SocketIO应用程序作为一个服务在ubuntu16.04上运行,在一个虚拟环境中.我的服务器每天凌晨3点重新启动(超出我的控制范围),所以我需要它在启动时自动启动.在 ...

  2. python 服务注册_将python程序注册为Ubuntu系统服务,并开机启动的方法。

    一.系统环境 操作系统:ubuntu 18 (该版本已默认使用systemd作为init) python版本:3.6 二.步骤 (一)准备python程序 1.在 /usr/bin/ 下新建pytho ...

  3. 基于腾讯云服务器部署微信小程序后台服务(Python+Django)

    一 前言 微信小程序,相信大家早已熟知,它是一种无需下载安装即可使用的轻型应用,具有跨平台和接近Native App性能体验的优势.从开发模式上说,它是前后端分离的,微信小程序负责实现前端应用,后端服 ...

  4. python 做服务程序_windows平台把python程序制作成windows服务并开机启动(实践的坑)...

    简介 通常在windows平台上开发完python服务后,需要通过引用虚拟环境后再运行,或者使用IDE软件启动,但如果想做成开机启动的本地服务,每次都这样启动就太麻烦了. 该文档介绍这个方法是把pyt ...

  5. 计算机毕业设计Python+uniapp校园服务微信小程序(小程序+源码+LW)

    计算机毕业设计Python+uniapp校园服务微信小程序(小程序+源码+LW) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行 环境配置: Pychram社区版+ pyth ...

  6. [附源码]计算机毕业设计Python+uniapp家政服务系统小程序7na26(程序+lw+远程部署)

    [附源码]计算机毕业设计Python+uniapp家政服务系统小程序7na26(程序+lw+远程部署) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行环境配置: Python ...

  7. win2000 java,把一个普通应用程序变为win2000(NT)中的服务-JSP教程,Java技巧及代码...

    把一个普通应用程序变为win2000(nt)中的服务 下载相关程序 srvany.exe instsrv.exe http://postboy.myetang.com/files/srvany.exe ...

  8. Flask实现Web服务调用Python程序

    Flask实现Web服务调用Python程序 通过Web服务调用Python写的手写数字识别算法模型,得到手写数字识别结果. 项目场景: 项目需求:将客户端的请求经由Web服务器转发给Flask程序实 ...

  9. python 程序停止打印日志_优雅停止 SpringBoot 服务,拒绝 kill -9 暴力停止!

    在使用 SpringBoot 的时候,都要涉及到服务的停止和启动,当我们停止服务的时候,很多时候大家都是kill -9 直接把程序进程杀掉,这样程序不会执行优雅的关闭.而且一些没有执行完的程序就会直接 ...

最新文章

  1. 关于Unsupported major.minor version 52.0报错问题解决方案
  2. python装饰器 property_Python中@property装饰器的使用技巧性解析(代码示例)
  3. VMware借微软之东风紧追思杰XenApp业务
  4. Linux-目录结构说明
  5. 又见斐波那契数列(矩阵构造+矩阵快速幂)
  6. 数据库---练习题(45道)
  7. 【C/C++】关键字static
  8. 一个数组分成两部分,让两部分的差最小
  9. Enterprise Continuous Integration with Binary Dependencies example
  10. iphone openssh
  11. char* str = abc ;跟char str[] = abc;的区别
  12. Word文档分割总结
  13. 周记(2016-6-27 -- 2016-7-3)
  14. 【bzoj1712】[Usaco2007 China]Summing Sums 加密 矩阵乘法
  15. 后台管理系统开发缺陷日志
  16. 微信oauth2的认证
  17. 夏天来了,来吃鹅厂新瓜,小马哥已吃
  18. 立创开源 | 基于ESP-01的桌面小彩灯
  19. js迷宫生成与迷宫求解算法
  20. 物联网环境监测数据中心系统

热门文章

  1. 发自虎扑android客户端,巴斯托尼要长留我纯啊
  2. 当append遇到make遇到的坑
  3. java如何导入和导出ex_SpringBoot中关于Excel的导入和导出
  4. 虚拟机开启mysql服务_远程操作虚拟机中的mysql服务器
  5. SQLAlchemy engine.Engine
  6. AudioContext
  7. redis mysql 集群_Redis(五)、Redis数据库集群相关
  8. mysql行转列和列转行_Mysql中行转列和列转行
  9. 怎样安装ubuntu系统
  10. Java多线程学习总结(3)——Java线程的6种状态及切换