1 个稳定版本
2.0.0 | 2022年6月29日 |
---|
#1525 在 命令行工具
46KB
901 行
vsv
- Void 服务管理器
管理和查看 runit 服务。
注意: 这是对原本用 Bash 编写的 vsv
的 Rust 重新编写。
vsv
受 vpm
启发。与 sv
类似,vpm
是 xbps
命令的对应物。
安装
使用 crates
cargo install vsv
自行编译
git clone [email protected]:bahamas10/rust-vsv.git
cd rust-vsv
cargo build
示例
运行不带参数的 vsv
来获取进程状态。这相当于运行 vsv status
注意: 由于每个服务的 supervise
目录权限严格,需要 sudo
或提升的权限才能确定服务状态。
vsv
默认扫描 /var/service
目录,可以通过设置环境变量 $SVDIR
或传递一个 -d <dir>
参数来覆盖。任何少于 5 秒处于状态的服务将以红色标记,少于 30 秒的将以黄色标记,使新服务或失败的服务易于发现
我们可以通过将服务作为 "过滤器" 传递给 status
来隔离服务。
可以在 status
之后传递一个字符串作为第一个参数,以过滤包含该字符串名称的服务。还可以向 status
提供一个 -t
来打印该进程的进程树
除了 status
之外的所有命令都将直接传递给 sv
命令。重新启动服务就像 vsv restart <svc>
要停止服务,可以使用 vsv down <svc>
或 vsv stop <svc>
可以使用 vsv -t
生成完整的树形结构。此命令等同于运行 vsv status -t
可以指定 -l
来查看每个服务的日志服务。此命令等同于运行 vsv status -l virt
可以将 -t
与 -l
结合使用来以树形结构查看每个服务的日志服务以及常规服务。此命令等同于运行 vsv status -tl virt
用法
快速示例
vsv
- 显示所有服务vsv status
- 与上面相同vsv stop <svc>
- 停止服务vsv start <svc>
- 启动服务vsv restart <svc>
- 重启服务vsv enable <svc>
- 启用服务(启动时自动启动)vsv disable <svc>
- 禁用服务(启动时不自动启动)vsv hup <svc>
- 刷新服务(SIGHUP
)
状态
status
子命令有以下字段
SERVICE
- 服务(目录)名称。STATE
- 服务状态:来自.../$service/supervise/stat
的输出。ENABLED
- 如果服务已启用(没有.../$service/down
文件)。PID
- 正在被监控的进程的 pid。COMMAND
- 被监控 pid 的 arg0(/proc/$pid/cmdline
的第一个字段)。TIME
- 服务处于当前状态的时长。
命令用法
$ vsv -h
__ _______ __
\ \ / / __\ \ / / Void Service Manager
\ V /\__ \\ V / Source: https://github.com/bahamas10/vsv
\_/ |___/ \_/ MIT License
-------------
Manage and view runit services
Made specifically for Void Linux but should work anywhere
Author: Dave Eddy <[email protected]> (bahamas10)
vsv 2.0.0
Runit service manager CLI
USAGE:
vsv [OPTIONS] [SUBCOMMAND]
OPTIONS:
-c, --color <yes|no|auto> Enable or disable color output
-d, --dir <dir> Directory to look into, defaults to env SVDIR or /var/service if
unset
-h, --help Print help information
-l, --log Show log processes, this is a shortcut for `status -l`
-t, --tree Tree view, this is a shortcut for `status -t`
-u, --user User mode, this is a shortcut for `-d ~/runit/service`
-v, --verbose Increase Verbosity
-V, --version Print version information
SUBCOMMANDS:
disable Disable service(s)
enable Enable service(s)
help Print this message or the help of the given subcommand(s)
status Show process status
Any other subcommand gets passed directly to the 'sv' command, see sv(1) for
the full list of subcommands and information about what each does specifically.
Common subcommands:
start <service> Start the service
stop <service> Stop the service
restart <service> Restart the service
reload <service> Reload the service (send SIGHUP)
环境变量
SVDIR
:要使用的目录,传递给sv
命令,可以用-d <dir>
覆盖。PROC_DIR
:用于命令名称查找的 Linux procfs 目录,默认为/proc
。SV_PROG
:用于传递给vsv
的任何 "外部" 子命令的命令,默认为sv
。PSTREE_PROG
:用于获取给定 pid 的进程树的命令,默认为pstree
。NO_COLOR
:设置此环境变量以禁用彩色输出。
语法
所有源代码都应该清除 cargo clippy
和 cargo fmt
。您可以使用 make
来确保这一点
$ make check
cargo check
Finished dev [unoptimized + debuginfo] target(s) in 0.01s
cargo clippy
Finished dev [unoptimized + debuginfo] target(s) in 0.12s
$ make fmt
cargo fmt
许可证
MIT 许可证
依赖项
~5MB
~93K SLoC