1 个不稳定版本
0.1.0 | 2024年3月29日 |
---|
#326 在 Unix API
11KB
163 行
安纳金
这是一个运行另一个命令并终止其生成的所有孤儿进程的工具。
当在Linux上终止进程时,其子进程不会自动终止。相反,它们会被重新归到init进程(内核启动的第一个进程)下并继续运行。在很多情况下,这并不是你想要的。
特别是这个工具是为了处理gitlab-runner
而编写的,它运行CI作业。当作业超时时,gitlab-runner
只会终止它启动的进程。任何该进程的子进程可能会成为孤儿并继续运行。
安纳金使用Linux的PR_SET_CHILD_SUBREAPER
功能将自己标记为“子子进程回收者”,这意味着任何成为孤儿的后代都会被重新归到这个进程下,而不是init进程。然后这个进程会定期轮询其子进程并终止所有归到它的孤儿进程。
安装
最简单的安装方法是使用pip
python3 -m pip install anakin2
或者如果你有Rust
cargo install anakin
用法
没有参数。只需将你的命令前缀为anakin
。
而不是
my_program --some --args
运行
anakin my_program --some --args
日志记录
日志记录由以下环境变量控制
ANAKIN_LOG
,例如ANAKIN_LOG=info
会在终止孤儿时打印。默认级别是error
。ANAKIN_LOG_STYLE
控制颜色输出。它可以设置为auto
(默认)、always
或never
。ANAKIN_LOG_FILE
如果设置,则将日志记录到该文件名,加上进程ID。否则它将记录到stderr。
许可证
此软件受MIT许可证的许可。请参阅LICENSE-MIT
文件。
依赖项
~7–16MB
~210K SLoC