英文|中文
rustfs-manager 是一个使用 Rust 语言开发的 Windows 服务管理工具,基于 win-service-rs 库,旨在提供类似 Linux systemctl
的服务管理功能。它用于管理 rustfs.exe 或类似服务的生命周期,支持服务的安装、启动、停止、状态查询和卸载。win-service-rs
是一个独立的 Rust 库,封装了 Windows 服务控制管理器(SCM)的 API,提供安全、易用的接口,适用于任何 Windows 服务管理需求。
该项目结合了 Rust 的内存安全性和 windows-rs 的强大功能,提供了高效、可靠的服务管理解决方案。无论是开发企业级应用还是自动化脚本,
rustfs-manager 和 win-service-rs 都能提供灵活的支持。
tracing 输出 JSON 格式日志,便于集成到 ELK 或 Graylog。tokio 提供异步接口,优化高并发场景。windows-rs 的安全绑定,确保内存安全和操作可靠性。rustup update stable
git clone https://github.com/houseme/win-service-rs.git
cd win-service-rs/examples/rustfs_manager
Cargo.toml 中,运行以下命令构建:
cargo build --release
config/config.toml,更新 exe_path 等参数,确保 rustfs.exe 路径有效。rustfs-manager 提供了一个命令行接口(CLI),支持以下命令:
cargo run -- install
将 rustfs.exe 注册为 Windows 服务。
cargo run -- start
cargo run -- stop
cargo run -- status
cargo run -- uninstall
运行 cargo run -- --help 查看完整命令列表。
cargo build --release
复制文件:
将 target/release/rustfs-manager.exe 和 config/config.toml 复制到目标服务器。
.\scripts\deploy.ps1
sc query RustFSManager
win-service-rs 是一个独立的 Rust 库,封装了 Windows SCM API,提供安全、易用的服务管理接口。以下是使用示例:
Cargo.toml 中添加:
[dependencies]
win-service-rs = { version = "0.1.0", features = ["async"] }
use win_service_rs::{ServiceConfig, ServiceManager, StartType};
#[tokio::main]
async fn main() -> Result<(), win_service_rs::Error> {
let mut manager = ServiceManager::new("RustFS")?;
let config = ServiceConfig::new(
"C:\\path\\to\\rust-fs.exe".to_string(),
"RustFS Service".to_string(),
)
.with_description("RustFS File System Service".to_string())
.with_start_type(StartType::Demand);
manager.install(&config)?;
manager.async_start().await?;
let status = manager.async_status().await?;
println!("Service status: {:?}", status);
manager.async_stop().await?;
manager.uninstall()?;
Ok(())
}
异步支持:
启用 async 特性后,可使用 async_start、async_stop 和 async_status 方法,适合高并发场景。
Error 类型,处理 SCM 错误(如权限不足、服务不存在)。rustfs-manager 或 win-service-rs 需要管理员权限。tracing 的 JSON 日志输出到文件,集成到 ELK 或 Graylog。rustfs.exe 和 rustfs-manager 的文件权限,防止未授权访问。win-service-rs。本项目采用 MIT、Apache 许可证,详见见 LICENSE-APACHE、LICENSE-MIT 文件。