1 个稳定版本

2.0.0 2022年6月29日

#1525命令行工具

MIT 许可证

46KB
901

vsv - Void 服务管理器

管理和查看 runit 服务。

注意: 这是对原本用 Bash 编写的 vsv 的 Rust 重新编写。

vsvvpm 启发。与 sv 类似,vpmxbps 命令的对应物。

安装

使用 crates

cargo install vsv

自行编译

git clone [email protected]:bahamas10/rust-vsv.git
cd rust-vsv
cargo build

示例

运行不带参数的 vsv 来获取进程状态。这相当于运行 vsv status

vsv-status

注意: 由于每个服务的 supervise 目录权限严格,需要 sudo 或提升的权限才能确定服务状态。

vsv 默认扫描 /var/service 目录,可以通过设置环境变量 $SVDIR 或传递一个 -d <dir> 参数来覆盖。任何少于 5 秒处于状态的服务将以红色标记,少于 30 秒的将以黄色标记,使新服务或失败的服务易于发现

vsv-add-service.jpg

我们可以通过将服务作为 "过滤器" 传递给 status 来隔离服务。

vsv-filter.jpg

可以在 status 之后传递一个字符串作为第一个参数,以过滤包含该字符串名称的服务。还可以向 status 提供一个 -t 来打印该进程的进程树

vsv-arguments.jpg

除了 status 之外的所有命令都将直接传递给 sv 命令。重新启动服务就像 vsv restart <svc>

vsv-restart.jpg

要停止服务,可以使用 vsv down <svc>vsv stop <svc>

vsv-down.jpg

可以使用 vsv -t 生成完整的树形结构。此命令等同于运行 vsv status -t

vsv-tree.jpg

可以指定 -l 来查看每个服务的日志服务。此命令等同于运行 vsv status -l virt

vsv-log.jpg

可以将 -t-l 结合使用来以树形结构查看每个服务的日志服务以及常规服务。此命令等同于运行 vsv status -tl virt

vsv-log-tree.jpg

用法

快速示例

  • 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 clippycargo 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