1 个不稳定版本
0.1.0 | 2023 年 12 月 31 日 |
---|
#672 in Unix API
22KB
537 行
swaperooni
在不终止父进程 PID 的情况下热重载子进程。将信号代理到子进程中。
- 如果子进程退出,
swaperooni
将以相同的代码退出。 - 如果发出交换请求,将终止子进程,并启动新的子进程。
支持两种热重载请求选项
ipc
- 从子进程向 swaperooni 套接字发送以换行符分隔的命令字符串。见 examples/ipc_bash_hopscotch/main.sh。poll
- 监控文件的mtime
。在更改时重新执行它。
swaperooni 不是一个管理器。 swaperooni
与 tini 类似。
为什么
因为你可以。通常,避免使用此功能,并使用管理器/编排器。你可能有一些情况下交换子进程 PID 更可取(例如,奇特的 docker/k8s 环境)。
如何
查看示例。
SOCKET_PATH=demo.sock cargo run ipc -- bash examples/ipc_bash_hopscotch/a.sh
- 程序
a
短暂运行后,请求被交换为程序b
。b
请求程序c
,而c
则优雅地退出。
- 程序
SOCKET_PATH=demo.sock cargo run ipc--运行示例/ipc_node_counter/索引.mjs0
- 运行一个 node.js 进程。该进程请求 swaperooni 再次运行自己,但使用不同的参数(计数器)
cargo运行 poll --poll-interval-ms=1000 --examples/poll_countdown/main.sh 5
- 轮询入口点更改并重新运行它。
性能
嗯,它小于 1MB,并且大多数时候什么都不做。
依赖项
~4–11MB
~96K SLoC