#process #init #cli #pid1

app pid1-exe

pid1 处理库,用于正确处理 PID1 进程的信号和僵尸回收

4 个版本

0.1.3 2023 年 11 月 14 日
0.1.2 2023 年 10 月 6 日
0.1.1 2023 年 10 月 4 日
0.1.0 2023 年 10 月 3 日

1366命令行工具

每月 30 次下载

MIT 许可证

20KB
254 代码行

pid1-rs

Crates.io Crates.io Rust

pid1 处理库,用于正确处理 PID1 进程的信号和僵尸回收。

本仓库包含两个包

  • pid1 crate:旨在供您的 Rust 应用程序使用的库。
  • pid1-exe crate:内部使用 pid1 crate 的二进制文件,用于容器部署。二进制文件名为 pid1

pid1 库使用方法

此库用于简化容器化环境中的 Rust 部署。您可以在容器中使用此 crate 直接代替像 Haskell 的 pid1tini 这样的二进制文件。

您必须确保 launch 方法是您的 main 函数中的第一条语句

use std::time::Duration;
use pid1::Pid1Settings;

fn main() {
    Pid1Settings::new()
        .enable_log(true)
        .timeout(Duration::from_secs(2))
        .launch()
        .expect("Launch failed");
    println!("Hello world");
    // Rest of the logic...
}

您还可以在此处查看各种示例用法 这里。 此函数仅适用于 Unix 系统,上述代码在 Windows 中为无操作。

使用 pid1 二进制文件

您可以下载作为 发布版 部分之一的 pid1 二进制文件,并在您的容器中直接使用它。示例

FROM alpine:3.14.2

ADD https://github.com/fpco/pid1-rs/releases/download/v0.1.0/pid1-x86_64-unknown-linux-musl /usr/bin/pid1

RUN chmod +x /usr/bin/pid1

ENTRYPOINT [ "pid1" ]

二进制文件支持的选项

❯ pid1 --help
Usage:

Arguments:
  <COMMAND>  Process to run
  [ARGS]...  Arguments to the process

Options:
  -w, --workdir <DIR>        Specify working direcory
  -t, --timeout <TIMEOUT>    Timeout (in seconds) to wait for child proess to exit [default: 2]
  -v, --verbose              Turn on verbose output
  -e, --env <ENV>            Override environment variables. Can specify multiple times
  -u, --user-id <USER_ID>    Run command with user ID
  -g, --group-id <GROUP_ID>  Run command with group ID
  -h, --help                 Print help

开发

测试步骤在 Development.md 中记录。我们只将其部分集成到 CI 中。

依赖项

~3.5MB
~71K SLoC