systemd-service

Crates.iosystemd-service
lib.rssystemd-service
version0.3.1
created_at2025-11-16 06:23:18.595437+00
updated_at2025-12-15 06:44:58.915383+00
descriptionGenerate service files for the application
homepage
repositoryhttps://github.com/ikeeplearn/systemd-service
max_upload_size
id1935260
size21,769
(iKeepLearn)

documentation

README

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> {
    // 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(())
}
Commit count: 0

cargo fmt