3 min read

利用NSSM为jupyterlab注册windows服务

背景

之前一直都是配置的定时任务来执行的jupyterlab, 但用起来一直不太爽, 任务闪退了只能等定时重启, 没法自动拉起. 于是便尝试配置为服务.

方案

目前了了解到的注册为windows服务主要有以下方案

方案利弊

方案1,2都存在一个问题, 注册后没法修改, 而且sc注册的服务没法删除, 只能禁用, 很难受

而方案3, NSSM, 非常灵活, 它有一套自己的管理界面和管理系统, 可以用它来注册服务, 修改服务, 删除服务, 启停服务, 很不错.

NSSM使用步骤

  1. 下载NSSM, 可以直接访问 http://nssm.cc/ , 点Download下载. 这是下载地址;
  2. 下载后解压到一个不带中文的目录, 然后到环境变量中添加win64到PATH下;
  3. 管理员打开命令行, 执行 nssm installl service_name 就可以打开GUI注册服务了;

NSSM的其他基本用法

执行 nssm 即可查看使用帮助

NSSM: The non-sucking service manager
Version 2.24 64-bit, 2014-08-31
Usage: nssm <option> [<args> ...]

To show service installation GUI:
        nssm install [<servicename>]
To install a service without confirmation:
        nssm install <servicename> <app> [<args> ...]
To show service editing GUI:
        nssm edit <servicename>
To retrieve or edit service parameters directly:
        nssm get <servicename> <parameter> [<subparameter>]
        nssm set <servicename> <parameter> [<subparameter>] <value>
        nssm reset <servicename> <parameter> [<subparameter>]
To show service removal GUI:
        nssm remove [<servicename>]
To remove a service without confirmation:
        nssm remove <servicename> confirm
To manage a service:
        nssm start <servicename>
        nssm stop <servicename>
        nssm restart <servicename>
        nssm status <servicename>
        nssm rotate <servicename>

都还是比较简单的英文, 不翻译了.

利用NSSM注册jupyterlab

  • 先查找 jupyter lab 命令所在位置
PS C:\Windows\system32> .\where.exe jupyter
C:\Program Files\Python310\Scripts\jupyter.exe
PS C:\Windows\system32> .\where.exe jupyter-lab
C:\Program Files\Python310\Scripts\jupyter-lab.exe
  • 运行 nssm install jupyterlab 打开服务注册页面, 并选择对应执行文件
  • nssm默认以服务方式启动, 但jupyterlab需要在用户文件夹下面建立配置文件等, 因此要配置为用户启动. 注意需要在前面添加 .\ 才能指定管理员用户
  • 点击 Install service 即可注册成功, 可以启停了

坑点

  • 管理员用户的用户名, 跟任务管理器跟netplwiz的规则都不太一致, 不能用 Administrator/user 也不能用 hostname/userdomain/useruser@domain 只能用 ./user , 不然会报错
Failed to look up the SID for username fvs/fvs!
LsaLookupNames(): 帐户名与安全标识间无任何映射完成。