#systemd #process #service #transient #running #manager #per-user

systemd-run

A Rust crate for running processes as Systemd transient services

8 breaking releases

0.9.0 Nov 6, 2024
0.7.1 Feb 22, 2024
0.6.0 Dec 1, 2023
0.5.0 Nov 27, 2023
0.2.0 Jul 14, 2022

#353 in Unix APIs

Download history 5/week @ 2024-10-02 110/week @ 2024-10-30 158/week @ 2024-11-06 7/week @ 2024-11-13 4/week @ 2024-11-20 80/week @ 2024-11-27 50/week @ 2024-12-04 28/week @ 2024-12-11 11/week @ 2024-12-18 15/week @ 2024-12-25 28/week @ 2025-01-08 10/week @ 2025-01-15

53 downloads per month

MIT/Apache

71KB
1.5K SLoC

Rust 1K SLoC // 0.0% comments C 136 SLoC // 0.1% comments C++ 37 SLoC

Contains (ELF exe/lib, 18KB) test-aux/setuid

systemd_run

This is the crate for running processes as Systemd transient services.

Status: Highly unstable, at early development cycle.

Example code

This code starts /bin/true as a Systemd transient service, running in the per-user service manager of your login session, and wait for it to finish.

#[async_std::main]
async fn main() -> std::result::Result<(), Box<dyn std::error::Error>> {
	let status = systemd_run::RunUser::new("/bin/true")
		.start()
		.await?
		.wait()
		.await?;
	dbg!(status);
	Ok(())
}

Dependencies

~9–19MB
~289K SLoC