利用NSSM为jupyterlab注册windows服务
背景
之前一直都是配置的定时任务来执行的jupyterlab, 但用起来一直不太爽, 任务闪退了只能等定时重启, 没法自动拉起. 于是便尝试配置为服务.
方案
目前了了解到的注册为windows服务主要有以下方案
- 利用windows自带的sc.exe创建服务
sc.exe create 服务名 binPath="执行路径"
或者power shell的New-Service
, 一样的用法 - 利用
InstSrv
来注册服务 - 利用 NSSM 来注册服务
方案利弊
方案1,2都存在一个问题, 注册后没法修改, 而且sc注册的服务没法删除, 只能禁用, 很难受
而方案3, NSSM, 非常灵活, 它有一套自己的管理界面和管理系统, 可以用它来注册服务, 修改服务, 删除服务, 启停服务, 很不错.
NSSM使用步骤
- 下载NSSM, 可以直接访问 http://nssm.cc/ , 点Download下载. 这是下载地址;
- 下载后解压到一个不带中文的目录, 然后到环境变量中添加win64到PATH下;
- 管理员打开命令行, 执行
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/user
和domain/user
和user@domain
只能用./user
, 不然会报错
Failed to look up the SID for username fvs/fvs!
LsaLookupNames(): 帐户名与安全标识间无任何映射完成。
Member discussion