博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python的win32serviceutil之疑似BUG
阅读量:6818 次
发布时间:2019-06-26

本文共 1294 字,大约阅读时间需要 4 分钟。

@ 20090515

1、现象:

用Python的,如下代码一般是没问题的。

import win32serviceutil

def service_manager(action, machine, service):

    if action == 'stop':
        win32serviceutil.StopService(service, machine)
    elif action == 'start':
        win32serviceutil.StartService(service, machine)
    elif action == 'restart':
        win32serviceutil.RestartService(service, machine)
    elif action == 'status':
        if win32serviceutil.QueryServiceStatus(service, machine)[1] == 4:
            print "%s is happy" % service
        else:
            print "%s is being a PITA" % service

但控制Apache Service时,会出现一个很怪的现象。

譬如运行这么简单的语句:

import win32serviceutil

win32serviceutil.StartService("Apache2.2","localhost")

顺利执行后,停止的Apache服务并没有被启动。

此时,Windows事件日志就会报告这种错误:
事件类型:    错误
事件来源:    Apache Service
事件种类:    无
事件 ID:    3299
The Apache service named  reported the following error:
>>> Usage: C:""Apache2.2""bin""httpd.exe [-D name] [-d directory] [-f file]

 

同样,win32serviceutil.RestartService 函数虽然可以先正常地停止掉Apache服务,但试图启动时仍遇到同样的错误。

在多台服务器(Windows2003+SP2)和我本机(WindowsXP+SP2)都可以重现。

2、解决:

 

把machine参数去掉不传即可,或传空字符串。 

即: 
win32serviceutil.StartService("Apache2.2") 

win32serviceutil.StartService("Apache2.2","")

可以正常启动本机的Apache,这样无法遥控域内其他服务器了。

 

3、更多:
1:win32serviceutil.StartService(service, '-w -n "Apache2.2" -k start')
这样不传machine参数,只设定服务启动的传入参数也不行。

2:对于 win32serviceutil.StopService 函数,停止Apache等Windows服务时,不存在此问题。

转载地址:http://nnczl.baihongyu.com/

你可能感兴趣的文章
中联通4月份3G用户净增181.7万总数突破2000万
查看>>
cJSON填坑记
查看>>
css3(border-radius)边框圆角详解(转)
查看>>
Python MySQLdb 使用utf-8 编码插入中文数据
查看>>
hdu1406
查看>>
排序算法一:快速排序
查看>>
Python中的__name__和类
查看>>
Android 开发工具下载中文网站
查看>>
Redis 列表处理
查看>>
Redis常用命令
查看>>
The vim syntax of systemd unit file
查看>>
关于Linux库文件的制作--普通的静态库、动态库
查看>>
正式学习React( 三)
查看>>
jq实现动态粒子效果
查看>>
yum install tomcat
查看>>
Linux 定时任务执行 php artisan
查看>>
$_request、$_post、$_get用于接受表单数据,当时他们有何种区别,什么时候用那种最好。...
查看>>
jqzoom图片放大镜
查看>>
常用sql语句 DML语句
查看>>
python中序列类型
查看>>