systemd-run
Run commands in transient units
TLDR
Start a transient service
$ sudo systemd-run [command] [arguments]
Start a transient service under the current user$ systemd-run --user [command] [arguments]
Start a transient service with a custom name and description$ sudo systemd-run -u [name] --description [string] [command]
Start a service that remains after exit with custom environment$ sudo systemd-run -r --set-env=[name]=[value] [command]
Start a transient timer that runs periodically$ sudo systemd-run --on-calendar=[calendar_event] [command]
Run interactively with terminal access$ systemd-run -r --pty [command]
Set resource limits and wait for completion$ systemd-run -p MemoryMax=[bytes] -p CPUQuota=[percentage]% --wait [command]
Use in a shell pipeline$ [command1] | systemd-run -P [command2] | [command3]
SYNOPSIS
systemd-run [options] [command] [arguments]
DESCRIPTION
systemd-run runs programs in transient scope or service units managed by systemd. This allows applying resource controls, creating timers, and proper service management for ad-hoc commands.The tool is useful for running commands with specific resource limits (CPU, memory), creating one-shot timers, and ensuring proper cleanup and logging through systemd.
PARAMETERS
--user
Run under user service manager-u, --unit _name_
Unit name for the transient service--description _text_
Description for the unit-r, --remain-after-exit
Keep unit after process exits--set-env _name=value_
Set environment variables--on-calendar _spec_
Create a timer unit--pty
Allocate a pseudo-TTY-p, --property _name=value_
Set unit properties--wait
Wait for service completion-P, --pipe
Enable pipe mode for use in pipelines.-t, --pty
Run interactively with a PTY attached (alias variant).-q, --quiet
Suppress informational messages.--scope
Create a transient .scope unit instead of a .service unit.--slice NAME
Add the unit into the specified slice.--working-directory DIR
Set the working directory for the invoked command.--uid USER, --gid GROUP
Run the command as the given user/group.--nice N
Set scheduling priority for the invoked command.
CAVEATS
Timer syntax follows systemd.time format. Resource properties require appropriate cgroup controllers. Some options require root privileges. Part of the systemd suite.
SEE ALSO
systemctl(1), systemd-analyze(1), systemd-cgls(1), systemd-inhibit(1)
