Python脚本注册为Windows服务


以下是将你的Python脚本使用NSSM注册为Windows服务并设置为开机自启动的完整步骤:

步骤 1: 下载并安装NSSM

  1. 访问 NSSM官网 下载适用于你系统的NSSM版本(通常是 win64 或 win32),并解压缩到一个文件夹中,比如 C:\nssm。

步骤 2: 准备Python环境和脚本

确保Python已安装:

○ 确保你的系统已经安装了Python,并且所有需要的库(如requests)都已经安装。

保存Python脚本:

○ 将你的Python脚本保存到一个特定的目录,比如 C:\scripts\pyscripts.py。

步骤 3: 使用NSSM注册服务

打开命令提示符:

○ 以管理员身份打开命令提示符。

导航到NSSM所在目录:

○ 进入NSSM所在的目录,例如:

cd C:\nssm\win64

以上1、2步骤也可以在资源管理器中进入到nssm.exe 所在目录后按住shift键不动右键选择在此处打开 Powershell 窗口(S)

注册服务:

○ 运行以下命令来注册你的Python脚本为服务:

.\nssm.exe  install MyPythonService

这会弹出NSSM的服务配置窗口。

配置服务:

○ 在NSSM服务配置窗口中,进行以下设置:
■ Application Path: 指定Python解释器的路径,例如 C:\Python39\python.exe
■ Startup directory: 指定Python脚本所在的目录,例如 C:\scripts\
■ Arguments: 输入Python脚本的路径和参数,例如 pyscripts.py

最终构建的结果如下

C:\Python39\python.exe C:\scripts\pyscripts.py

注意事项
建议install前先检查构建的结果在Powershell 窗口(S)下是否能正常运行

在cmd使用以下命令获取python解释器路径

where python

部分电脑的C:\Users\你的用户名\AppData\Local\Microsoft\WindowsApps\python.exe路径它可能可能有一些限制,比如不能使用某些命令行参数。无法使用的。
where python查不到也没有关系
python.exe真实目录一般位于C:\Users\你的用户名\AppData\Local\Programs\Python\Python39\目录下
其中
Python39 是3.9版本的的意思,如上目录
Python312 是3.12版本的的意思

若是指定安装则写指定安装目录

设置服务启动类型:

○ 切换到 “Details” 标签页,找到 “Startup type” 选项,并将其设置为 “Automatic”,这将使服务在系统启动时自动启动。

保存服务:

○ 配置完成后,点击 “Install service” 按钮,NSSM会将该服务注册到Windows服务中。

步骤 4: 启动服务并验证

启动服务:

○ 在命令提示符中,使用以下命令启动服务:

.\nssm.exe start MyPythonService

○ 你也可以在 Windows 服务管理器 (services.msc) 中手动启动服务。

验证服务运行:

○ 打开 Windows 服务管理器 (services.msc),查找名为 MyPythonService 的服务,并确认其状态为“正在运行”(Running)。
○ 确认服务的 启动类型 显示为“自动”(Automatic)。

步骤 5: 设置日志记录(可选)

配置日志输出:

○ 打开NSSM的配置窗口:

.\nssm.exe edit MyPythonService

○ 在 “I/O” 标签页中,可以设置标准输出(stdout)和标准错误(stderr)的日志文件路径,以便记录服务的输出信息。

步骤 6: 重启系统并验证

重启计算机:

○ 重新启动计算机,确保服务在系统启动时自动启动。

检查服务状态:

○ 重启后,再次打开 Windows 服务管理器 (services.msc),确认服务 MyPythonService 的状态为“正在运行”(Running)。
通过这些步骤,你的Python脚本现在已经成功注册为一个在Windows系统启动时自动运行的服务,并且可以通过NSSM进行管理和监控。

卸载服务

.\nssm.exe stop MyPythonService
.\nssm.exe remove MyPythonService

查看示例
Windows通过dynv6提供免费的IPv6动态域名解析(DDNS)服务(NSSM注册服务的方式运行)

同理也可以使用nssm把其它可执行程序注册为服务。

有多种方法可以使Python脚本在后台自动运行,以下是其中的两种方法: 1. 使用Windows任务计划程序 Windows任务计划程序是Windows操作系统自带的一个工具,可以让用户在指定时间或事件触发时运行指定的程序或脚本。可以通过以下步骤将Python脚本添加到任务计划程序中: 1. 打开Windows任务计划程序,可以通过在开始菜单中搜索“任务计划程序”来打开; 2. 在任务计划程序中创建一个新任务,可以通过菜单栏中的“操作”->“创建任务”来创建; 3. 在创建任务的对话框中,设置任务的名称、描述、触发器、操作等参数。在操作参数中,选择“启动程序”并填写Python解释器的路径和要执行的脚本的路径; 4. 点击“确定”保存任务,并在任务计划程序中查看和管理任务。 2. 使用Windows服务 Windows服务是一种在后台运行的应用程序,可以在Windows操作系统中作为系统进程运行。可以通过以下步骤将Python脚本添加为Windows服务: 1. 安装pywin32模块,可以通过pip install pywin32命令安装; 2. 编写一个Python脚本,使用win32serviceutil模块将脚本注册Windows服务。例如: ```python import win32serviceutil import win32service import win32event import servicemanager import socket class PythonService(win32serviceutil.ServiceFramework): _svc_name_ = 'PythonService' _svc_display_name_ = 'Python Service' def __init__(self, args): win32serviceutil.ServiceFramework.__init__(self, args) self.hWaitStop = win32event.CreateEvent(None, 0, 0, None) socket.setdefaulttimeout(60) def SvcStop(self): self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING) win32event.SetEvent(self.hWaitStop) def SvcDoRun(self): servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE,servicemanager.PYS_SERVICE_STARTED, (self._svc_name_, '')) self.main() def main(self): # 在这里编写要执行的代码 pass if __name__ == '__main__': win32serviceutil.HandleCommandLine(PythonService) ``` 3. 将Python脚本打包为可执行文件,可以使用pyinstaller等工具将Python脚本打包为exe文件; 4. 以管理员权限打开命令行窗口,使用sc create命令将Python脚本注册Windows服务。例如: ``` sc create PythonService binPath= "D:\Python\PythonService.exe" ``` 其中PythonService是服务的名称,D:\Python\PythonService.exe是可执行文件的路径; 5. 启动服务,可以在Windows服务列表中找到PythonService服务并启动。 以上是两种常用的方法,可以根据自己的需要选择适合自己的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值