#process-manager #pocket #status #command #poor #imitation #supervisord

nightly app rust-pm

对supervisord的一个简陋且简单的模仿

2个版本

使用旧的Rust 2015

0.0.2 2015年5月19日
0.0.1 2015年5月17日

#11 in #pocket

MIT 许可证

13KB
298 行代码,不含注释

rust-pm - 简介

这是一个口袋进程管理器。将来它将成为systemd更好的模仿。看看这个asciicast

使用它非常简单,只需将rust-pm.toml放入与rust-pm相同的文件夹,并使用如下配置启动:

server-port = "localhost:4000"
[bad_sleeper] # Process name
command = "./bad_sleeper.py" # right now support 0 args commands
max_retries = 3 # 0 means forever

如果幸运的话,你可以在localhost:4000打开浏览器,并看到如下内容:

[{
  "command" : "./bad_sleeper.py",
  "max_retries" : 0,
  "name" : "bad_sleeper",
  "status" : {
    "meta" : 1,
    "state" : "running"
  }
}]

rust-pm启动并监视进程。如果失败,它将启动另一个实例,最多max_retries次。

想法

到目前为止,stdinstdoutstder已被管道传输。我们可能将其更改为继承,这样rust-pm的输出实际上就是进程输出。这取决于我们将如何处理日志。

警告

这是一个处于早期阶段的项目,尚未在生产环境中使用。

待办事项

  • 增强API以支持扩展和缩小进程。
  • 实现0 max_retries表示无限。 完成
  • 允许为进程配置workdir
  • 投资于日志? 完成。到目前为止,我们使用了简单的writeln!,因为特定的线程处理stdout
  • 实现fern以替换奇特的writeln!
  • 添加命令行解析器以指定配置文件。这样,rust-pm可以被放置在$PATH,并使用任何配置文件运行。

许可

MIT

依赖关系

~6MB
~148K SLoC