10个版本

0.4.0 2024年8月10日
0.3.3 2024年8月10日
0.3.2 2023年6月19日
0.2.4 2023年3月22日
0.1.1 2023年3月19日

#239 in Unix API

Download history 4/week @ 2024-07-05 10/week @ 2024-07-26 1/week @ 2024-08-02 215/week @ 2024-08-09

每月 226次下载

BSD-3-Clause

23KB
602 代码行

进程控制

这是一个简单的进程管理工具。它以相互依赖的图的形式运行进程。

你可以将进程控制想象成类似于Docker Compose,但针对命令而不是容器。或者像Foreman,但支持进程依赖性和可用性检查。

(进程控制仅在Unix/Linux系统上工作。已在Linux和macOS上进行了测试。)

安装

通过下载发布版本的二进制文件或通过在macOS上使用Homebrew来安装进程控制

$ brew install bww/stable/psctl

如果您已安装Rust工具链,您也可以从crates.io安装。

$ cargo install psctl

如何使用这个工具

进程可以与其关联可用性检查,用于确定何时启动完成并变为可用。进程还可以描述哪些其他进程是它们的依赖项。使用所有这些信息,进程控制

  1. 确定进程应运行的顺序
  2. 按此顺序依次执行每个进程
  3. 如果提供可用性检查,则等待每个进程变为可用
  4. 永远等待任何进程退出

一旦任何进程退出,进程控制将终止其他正在运行的进程并使用第一个退出进程相同的退出代码退出。

以下进程配置文件仅供参考

version: 1
tasks:
  -
    name: a
    run: sleep 3 && echo "A"
    checks:
      - https://hub.dummyapis.com/delay?seconds=2
      - https://hub.dummyapis.com/delay?seconds=3
    deps:
      - b
      - c

  -
    name: b
    run: sleep 10 && echo "B"
    checks:
      - https://hub.dummyapis.com/delay?seconds=2

  -
    name: c
    run: sleep 10 && echo "C"
    checks:
      - https://hub.dummyapis.com/delay?seconds=2
    deps:
      - b

可以按照以下方式运行

$ psctl --file test/example.yaml
====> b, c, a
----> b: sleep 10 && echo "B" (https://hub.dummyapis.com/delay?seconds=2)
----> c: sleep 10 && echo "C" (https://hub.dummyapis.com/delay?seconds=2)
----> a: sleep 3 && echo "A" (https://hub.dummyapis.com/delay?seconds=2; https://hub.dummyapis.com/delay?seconds=3)
A
====> finished

请注意,在进程a正常退出后,进程bc将被终止,因此它们不会输出任何内容。

依赖项

~9–21MB
~335K SLoC