24 个版本
0.10.0 | 2021 年 12 月 14 日 |
---|---|
0.9.0 | 2021 年 6 月 3 日 |
0.8.2 | 2020 年 12 月 3 日 |
0.8.1 |
|
0.0.1 | 2015 年 2 月 27 日 |
#67 在 Unix API 中
18,883 每月下载量
用于 10 crates
205KB
4K SLoC
rust-systemd
crate 文档 (systemd) crate 文档 (libsystemd-sys)
在 Cargo.toml
中
[dependencies]
systemd = "0.10"
构建环境变量
默认情况下,libsystemd-sys
将使用 pkg-config
来查找 libsystemd
。它默认使用 libsystemd
包。要更改在 pkg-config 中查找的包,设置环境变量 SYSTEMD_PKG_NAME
。
如果您想直接覆盖 libsystemd
的来源,设置环境变量 SYSTEMD_LIB_DIR
为包含要链接的 libsystemd
的路径。可选地,您还可以设置 SYSTEMD_LIBS
以指示要链接的库。变量 SYSTEMD_LIBS
中的库由冒号 (:
) 分隔,并可能包含一个 KIND
。例如:SYSTEMD_LIBS="static=foo:bar"
。
elogind 支持
设置 SYSTEMD_PKG_NAME=libelogind
(pkg-config 文件名)或同时设置 SYSTEMD_LIBS=elogind
并将 SYSTEMD_LIB_DIR
设置为适当的目录。
在使用 elogind 时,可能无法完全提供用于 journal
和 bus
功能的 API(elogind 是从旧版本的 systemd 分支出来的,可能缺少一些这些 API)。如果您的应用程序不需要这些功能,则无需依赖具有默认功能的 systemd
以允许最大兼容性。
[dependencies]
systemd = { version = "0.10", default-features = false }
请注意,可能仍然存在一些缺失的符号。如果您发现链接错误,请报告以便我们可以调整 systemd
crate 以支持它。
journal
支持日志发送,systemd::journal::Journal 是围绕读取 API 的(低功能)包装器。
日志写入 API 的示例
use log::warn;
use systemd::{journal, sd_journal_log};
fn main() {
use systemd::journal;
journal::print(1, &format!("Rust can talk to the journal: {:?}",
4));
journal::send(["CODE_FILE=HI", "CODE_LINE=1213", "CODE_FUNCTION=LIES"]);
journal::JournalLog::init().unwrap();
warn!("HI");
sd_journal_log!(4, "HI {:?}", 2);
}
守护进程
守护进程 API 主要提供与通过套接字激活传递给进程的原始文件句柄一起工作的工具。由于原始文件句柄在 Rust 中支持得不好,因此这些函数可能主要用于管理程序流程;实际的套接字代码将必须使用 libc crate。
许可证
此库是免费软件;您可以在自由软件基金会发布的 GNU 较小通用公共许可证的条款和条件下重新分发和/或修改它;许可证的版本 2.1 或(根据您的选择)任何更高版本。
除了 GNU 较小通用公共许可证中的权限外,作者还给您无限权限将此库的编译版本链接到其他程序组合中,并且可以无任何限制地分发这些程序(在其他方面,较小通用公共许可证的限制仍然适用;例如,它们涵盖对库的修改以及未链接到其他程序的分发。)
此库的目的是希望它有用,但没有任何保证;甚至没有关于其适销性或适用于特定目的的暗示性保证。有关详细信息,请参阅 GNU 较小通用公共许可证。
贡献
除非您明确声明,否则您提交的任何有意包含在作品中的贡献都应按上述方式授权,而无需任何附加条款或条件。
依赖关系
~0.4–1.2MB
~25K SLoC