lip daemon
显示或停止 lip 的守护进程。
概要
text
lip daemon status [--json] [-h | --help]
lip daemon stop [-h | --help]说明
守护进程是属于你这个用户、在后台运行的 lip 进程,它为其他所有 lip 进程执行命令:除 daemon 组以外的所有命令,以及界面。托管服务器也由它运行。
你不需要自己启动它:
- 命令连接守护进程。没有守护进程在监听时,命令会启动一个,使用它自己的环境变量,并与终端分离。
- 如果守护进程属于另一个 lip 版本,或另一个
lip可执行文件,命令会要求它退出,再启动一个新的。忙碌中的守护进程会继续运行;参见更新之后。 - 守护进程执行命令的方式与你启动的
lip完全一样:在你的工作目录中,使用你的环境变量,读取你的标准输入,写到你的标准输出和标准错误,并接收你的 Ctrl+C。lip以命令的退出码退出。
命令无法启动或连接守护进程时,会写一条消息,然后自己执行命令。此时只有 lip run --managed 会失败。
守护进程为两个终端执行的两条命令,表现得就像两个进程:例如,一条命令持有工作区锁时,另一条会发现锁被占用。
守护进程会自行退出:
- 在一段时间内既没有连接也没有运行托管服务器之后,当前版本中是 10 分钟;
- 在更新的或另一个
lip要求它退出,而它处于空闲时;以及 - 在执行了更新 lip 或启动安装程序的
lip self-update之后,一旦空闲。
守护进程通过只有你这个用户能使用的端点访问:Windows 上是命名管道,其他系统上是 Unix 套接字。参见守护进程端点。
lip daemon status
显示是否有守护进程在端点上监听;有的话,还显示它的版本和进程 ID。
lip daemon stop
要求守护进程退出,并等待它退出。
- 没有守护进程在监听时,命令成功,不做任何更改。
- 守护进程正在执行命令或运行托管服务器时,命令失败,守护进程继续运行。请先停止托管服务器:在各个工作区中用
lip run --managed连接并按 Ctrl+C,或者在界面的服务器页停止它们。等其他命令结束。然后再次运行lip daemon stop。
这两条命令都由你启动的进程自己执行,从不交给守护进程,也从不启动守护进程。
更新之后
旧版本 lip 的守护进程如果还在运行托管服务器或命令,就不会被替换。在它空闲之前:
lip run --managed使用旧的守护进程,所以你仍然可以连接并停止它的服务器;- 其他命令会写一条消息,然后由新的
lip自己执行。
停止托管服务器之后,下一条命令就会启动新版本的守护进程。
选项
| 选项 | 说明 |
|---|---|
--json | 用于 status:以 JSON 输出结果。 |
-h、--help | 输出帮助并退出。 |
输出
lip daemon status 把结果写到标准输出。不带 --json 时是给人看的一行:
text
The daemon of lip does not run.text
The daemon of lip 1.0.0 runs as process 4812, carrying out 0 commands.带 --json 时,没有守护进程在监听:
json
{"running":false}有守护进程在监听:
json
{"running":true,"version":"1.0.0","pid":4812}| 成员 | 值 |
|---|---|
running | 布尔值:是否有守护进程在端点上监听。 |
version | 字符串:守护进程的版本,即它的 lip -v 输出的内容。仅当 running 为 true 时存在。 |
pid | 数字:守护进程的进程 ID。仅当 running 为 true 时存在。 |
lip daemon stop 没有结果;它向标准错误写消息。
退出状态
| 命令 | 0 | 非 0 |
|---|---|---|
lip daemon status | 无论守护进程是否在运行。 | 用法错误。 |
lip daemon stop | 守护进程已退出,或本来就没有运行。 | 用法错误,或守护进程正忙而继续运行。 |
示例
查看守护进程是否在运行:
shell
lip daemon status在脚本中,仅当守护进程在运行时停止它:
shell
lip daemon status --json | jq -e '.running' > /dev/null && lip daemon stop