systemd-service
A library for Generate, installing, and managing
systemd services on Linux for Rust binary.
This crate provides a fluent builder (ServiceConfig) to define a systemd
service unit and a SystemdService struct to handle the generation,
installation, and management (start, enable) of that service.
⚠️ Important: Requires Root Privileges
Most operations in this crate (writing to /etc/systemd/system,
running systemctl commands) require root privileges to execute.
The methods will return an [Error::Permission] if run by a non-root user.
Example Usage
use systemd_service::{ServiceConfig, SystemdService, Error};
fn setup_my_service() -> Result<(), Error> {
let config = ServiceConfig::new(
"myapp",
"/usr/local/bin/myapp --run",
"My Application Service",
)
.user("myapp-user")
.group("myapp-group")
.working_directory("/var/lib/myapp")
.after(vec!["network.target".to_string()])
.environment(vec![
("RUST_LOG".to_string(), "info".to_string()),
("PORT".to_string(), "8080".to_string()),
])
.restart("on-failure")
.restart_sec(10);
let service = SystemdService::new(config);
service.install_and_enable()?;
service.start()?;
println!("Service 'myapp' installed and started successfully.");
Ok(())
}