前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >nssm 将应用写入 Windows 服务

nssm 将应用写入 Windows 服务

作者头像
李振
发布2021-11-26 15:04:52
2.3K0
发布2021-11-26 15:04:52
举报
文章被收录于专栏:乱码李

安装

nssm是一个 Windows 服务管理器,可以把应用写入服务,以达到自动重启的功能。

目前最新的版本是2.24,下载地址。 下载完成以后解压到某个路径下,然后将 win64/win32 文件路径(D:\nssm-2.24\win64)添加的环境变量 Path。

使用

Node

假设有一个最简单的 node 服务器程序

代码语言:javascript
复制
var express = require('express');
var app = express();

app.get('/', function(req, res) {
  res.send('Hello World');
});

app.listen(3000, function() {
  console.log('app is listening at port 3000');
});

需要将其写入 Windows 服务。

打开控制台工具。输入:

代码语言:javascript
复制
$ nssm install node_test

之后会显示出GUI界面:

输入Path为 node.exe安装路径,Startup directory 为应用文件路径,Arguments 为启动文件

点击 Install service

然后打开 Windows 的 Services,看到刚才安装的应用已经在 Services 里面了,并且为 “Automatic”,说明它会随着 Windows 启动而自动启动。

右击-“start”启动该服务,或者在命令行中输入

代码语言:javascript
复制
$ nssm start node_test

在浏览器中查看效果

在控制台输入 nssm 查看所有命令,可以看出 nssm 使用极其简单,参考官方文档

代码语言:javascript
复制
$ nssm install [<servicename>]
$ nssm remove [<servicename>]
$ nssm start <servicename>
$ nssm stop <servicename>
$ nssm restart <servicename>
$ nssm edit <servicename>

bat

Windows 中可以使用批处理文件做一些自动化和重复性的工作,bat 文件单击即可运行。

假如还是在刚才 index.js 文件夹下面有一个 bat 文件,文件内容:

代码语言:javascript
复制
$ node index.js 1> app.log 2>&1

我们将 bat 文件写入 Windows Services (记得提前移除刚才写入的node_test服务)

代码语言:javascript
复制
$ nssm install node_test_bat

这次路径直接选择 bat 文件即可,因为它是可执行文件。

启动 bat 文件

代码语言:javascript
复制
$ nssm start node_test_bat

在浏览器中输入 http://localhost:3000/ 查看效果,发现服务已经成功开启,而且这个时候在 index.js 文件夹里面发现了一个 app.log 文件,里面记录着 node 服务器的输入日志:

代码语言:javascript
复制
$ app is listening at port 3000

于是就在 nssm 监控管理 node 服务的同时,还拥有了一个简单的日志系统,是不是很方便。

Python

将 Python 应用写入 Windows 服务也可以使用上述两种方法。

nssm 启动 bat 服务报错

遇到 bat 文件双击可以运行,但是写入服务却不能运行的情况。

通过 Google 发现是可能是因为同时安装 Python2 和 Python3 导致的,因此改变 bat 文件为:

代码语言:javascript
复制
$ py -3 main.py

写入服务即可。

注意

注意非常不推荐把一个运行一次就结束的程序写入 Windows Services 的,比如 Node 或者 Python 脚本里面只有一句输出

代码语言:javascript
复制
console.log('Hello');
代码语言:javascript
复制
print('Hello')

使用 Windows 自带的 Services 手动启动:

使用 nssm 启动:

代码语言:javascript
复制
$ node_test: Unexpected status SERVICE_PAUSED in response to START control.

因为应用启动后立即结束,所以应用进入Paused 的状态。

但是可以把定时任务写入 Services。

如果对 Python 定时任务感兴趣,可以移步Python定时任务的实现方式

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-10-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装
  • 使用
    • Node
      • bat
        • Python
          • nssm 启动 bat 服务报错
          • 注意
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档