| Crates.io | systemd-service |
| lib.rs | systemd-service |
| version | 0.3.1 |
| created_at | 2025-11-16 06:23:18.595437+00 |
| updated_at | 2025-12-15 06:44:58.915383+00 |
| description | Generate service files for the application |
| homepage | |
| repository | https://github.com/ikeeplearn/systemd-service |
| max_upload_size | |
| id | 1935260 |
| size | 21,769 |
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.
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.
use systemd_service::{ServiceConfig, SystemdService, Error};
fn setup_my_service() -> Result<(), Error> {
// 1. Define the service configuration using the builder
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);
// 2. Create the service manager
let service = SystemdService::new(config);
// 3. Install, enable, and reload systemd
// This requires root privileges!
service.install_and_enable()?;
// 4. Start the service
// This also requires root privileges!
service.start()?;
println!("Service 'myapp' installed and started successfully.");
Ok(())
}