Python命令停止并启动Windows服务?

时间:2017-10-05 22:42:28

标签: python-3.x

什么是停止和启动Windows服务的python命令。我不能使用win32serviceutil,因为我使用的是最新的python版本3.6。

3 个答案:

答案 0 :(得分:2)

您可以使用Windows提供的sc命令行界面:

import subprocess
# start the service
args = ['sc', 'start', 'Service Name']
result = subprocess.run(args)
# stop the service
args[1] = 'stop'
result = subprocess.run(args)

答案 1 :(得分:1)

现有的答案非常非 Pythonic 且不够简单。

我在寻找 Pythonic 解决方案时偶然发现了这个问题。

我有一个更简单的解决方案,但不是 Pythonic。

只需将 net start servicenameos.system 一起使用。

比如我们要启动MySQL80:

import os
os.system('net start MySQL80')

现在将其用作函数:

import os

def start_service(svc):
    os.system(f'net start {svc}')

要停止服务,请使用 net stop servicename:

import os

def stop_service(svc):
    os.system(f'net stop {svc}')

我知道我的解决方案不是 Pythonic,但现有的答案也不是 Pythonic,到目前为止,在我的 Google 搜索中,我还没有找到任何相关和 Pythonic 的内容。

答案 2 :(得分:0)

安装 pywin32 from GitHub,那里没有关于 Python 3.6 的限制(我知道是 2017 年)+它直接与 Win32 API 一起工作,所以没有 os.system() 或类似的命令调用。此外,无需编译,作者在安装程序中提供二进制文件。而且 PyPI 似乎也没有任何问题 - the versions are matching

使用 StartService(serviceName, args = None, machine = None) 函数。