LinuxCommandLibrary

systemd-run

Run programs in transient scope units, service units, or path-, socket-, or timer-triggered service units.

TLDR

Start a transient service

$ sudo systemd-run [command] [argument1 argument2 ...]
copy


Start a transient service under the service manager of the current user (no privileges)
$ systemd-run --user [command] [argument1 argument2 ...]
copy


Start a transient service with a custom unit name and description
$ sudo systemd-run --unit=[name] --description=[string] [command] [argument1 argument2 ...]
copy


Start a transient service that does not get cleaned up after it terminates with a custom environment variable
$ sudo systemd-run --remain-after-exit --set-env=[name]=[value] [command] [argument1 argument2 ...]
copy


Start a transient timer that periodically runs its transient service (see man systemd.time for calendar event format)
$ sudo systemd-run --on-calendar=[calendar_event] [command] [argument1 argument2 ...]
copy


Share the terminal with the program (allowing interactive input/output) and make sure the execution details remain after the program exits
$ systemd-run --remain-after-exit --pty [executable]
copy


Set properties (e.g. CPUQuota, MemoryMax) of the process and wait until it exits
$ systemd-run --property MemoryMax=[memory_in_bytes] --property CPUQuota=[percentage_of_CPU_time]% --wait [executable]
copy


Use the program in a shell pipeline
$ [executable1] | systemd-run --pipe [executable2] | [executable3]
copy

Copied to clipboard