英文|中文
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
文件。