1 个不稳定版本

0.1.0 2024年3月29日

#326Unix API

MIT 许可证

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(默认)、alwaysnever
  • ANAKIN_LOG_FILE如果设置,则将日志记录到该文件名,加上进程ID。否则它将记录到stderr。

许可证

此软件受MIT许可证的许可。请参阅LICENSE-MIT文件。

依赖项

~7–16MB
~210K SLoC