CHRT(1) User Commands CHRT(1)

# [NAME](#NAME)

chrt - manipulate the real-time attributes of a process

# [SYNOPSIS](#SYNOPSIS)

**chrt** \[options] \[*priority*] *command* \[*argument*...]

**chrt --pid** \[options] \[*priority*] *PID*

# [DESCRIPTION](#DESCRIPTION)

**chrt** sets or retrieves the real-time scheduling attributes of an existing *PID*, or runs *command* with the given attributes.

# [POLICY OPTIONS](#POLICY_OPTIONS)

**-o**, **--other**

Set scheduling policy to **SCHED\_OTHER** (time-sharing scheduling). This is the default Linux scheduling policy. Since util-linux v2.42, the priority argument is optional; if specified, it must be set to zero.

**-f**, **--fifo**

Set scheduling policy to **SCHED\_FIFO** (first in-first out).

**-r**, **--rr**

Set scheduling policy to **SCHED\_RR** (round-robin scheduling). When no policy is defined, the **SCHED\_RR** is used as the default.

**-b**, **--batch**

Set scheduling policy to **SCHED\_BATCH** (scheduling batch processes). Linux-specific, supported since 2.6.16. Since util-linux v2.42, the priority argument is optional; if specified, it must be set to zero.

**-i**, **--idle**

Set scheduling policy to **SCHED\_IDLE** (scheduling very low priority jobs). Linux-specific, supported since 2.6.23. Since util-linux v2.42, the priority argument is optional; if specified, it must be set to zero.

**-d**, **--deadline**

Set scheduling policy to **SCHED\_DEADLINE** (sporadic task model deadline scheduling). Linux-specific, supported since 3.14. Since util-linux v2.42, the priority argument is optional; if specified, it must be set to zero. See also **--sched-runtime**, **--sched-deadline** and **--sched-period**. The relation between the options required by the kernel is runtime ⇐ deadline ⇐ period. **chrt** copies *period* to *deadline* if **--sched-deadline** is not specified and *deadline* to *runtime* if **--sched-runtime** is not specified. It means that at least **--sched-period** has to be specified. See [**sched**(7)](/man/os/util-linux/sched.7) for more details.

**-e**, **--ext**

Set scheduling policy to **SCHED\_EXT** (BPF program-defined scheduling). Linux-specific, supported since 6.12. Since util-linux v2.42, the priority argument is optional; if specified, it must be set to zero. Note that for the policy to be recognized, the following kernel configuration options need to be enabled: **CONFIG\_BPF**, **CONFIG\_SCHED\_CLASS\_EXT**, **CONFIG\_BPF\_SYSCALL**, **CONFIG\_BPF\_JIT**, **CONFIG\_DEBUG\_INFO\_BTF**, **CONFIG\_BPF\_JIT\_ALWAYS\_ON** and **CONFIG\_BPF\_JIT\_DEFAULT\_ON**.

# [SCHEDULING OPTIONS](#SCHEDULING_OPTIONS)

**-T**, **--sched-runtime** *nanoseconds*

Specifies runtime parameter for **SCHED\_DEADLINE** and custom slice length for **SCHED\_OTHER** and **SCHED\_BATCH** policies (Linux-specific). Note that custom slice length via the runtime parameter is supported since Linux 6.12.

**-P**, **--sched-period** *nanoseconds*

Specifies period parameter for **SCHED\_DEADLINE** policy (Linux-specific). Note that the kernel’s lower limit is 100 microseconds.

**-D**, **--sched-deadline** *nanoseconds*

Specifies deadline parameter for **SCHED\_DEADLINE** policy (Linux-specific).

**-R**, **--reset-on-fork**

Use **SCHED\_RESET\_ON\_FORK** or **SCHED\_FLAG\_RESET\_ON\_FORK** flag. Linux-specific, supported since 2.6.31.

Each thread has a *reset-on-fork* scheduling flag. When this flag is set, children created by [**fork**(2)](/man/os/util-linux/fork.2) do not inherit privileged scheduling policies. After the *reset-on-fork* flag has been enabled, it can be reset only if the thread has the **CAP\_SYS\_NICE** capability. This flag is disabled in child processes created by [**fork**(2)](/man/os/util-linux/fork.2).

More precisely, if the *reset-on-fork* flag is set, the following rules apply for subsequently created children:

•If the calling thread has a scheduling policy of **SCHED\_FIFO** or **SCHED\_RR**, the policy is reset to **SCHED\_OTHER** in child processes.

•If the calling process has a negative nice value, the nice value is reset to zero in child processes.

# [OPTIONS](#OPTIONS)

**-a**, **--all-tasks**

Set or retrieve the scheduling attributes of all the tasks (threads) for a given PID.

**-m**, **--max**

Show minimum and maximum valid priorities, then exit.

**-p**, **--pid**

Operate on an existing PID and do not launch a new task.

**-v**, **--verbose**

Show status information.

**-h**, **--help**

Display help text and exit.

**-V**, **--version**

Display version and exit.

# [EXAMPLES](#EXAMPLES)

The default behavior is to run a new command:

**chrt** *priority* *command* \[*arguments*]

You can also retrieve the real-time attributes of an existing task:

**chrt --pid** *PID*

Or set them:

**chrt --pid** *policy-option priority PID*

For example, to set the scheduling policy to **SCHED\_RR** (round-robin) and the priority to **30** for process **1234**:

**chrt --pid -r 30 1234**

Reset priorities to default for a process:

**chrt --pid -o 0** *PID*

Set a custom slice of 1 ms for a **SCHED\_OTHER** task (priority is optional for policies other than **SCHED\_FIFO** and **SCHED\_RR**):

**chrt --pid -o -T 1000000** *PID*

See [**sched**(7)](/man/os/util-linux/sched.7) for a detailed discussion of the different scheduler classes and how they interact.

# [PERMISSIONS](#PERMISSIONS)

A user must possess **CAP\_SYS\_NICE** to change the scheduling attributes of a process. Any user can retrieve the scheduling information.

# [NOTES](#NOTES)

Only **SCHED\_FIFO**, **SCHED\_OTHER** and **SCHED\_RR** are part of POSIX 1003.1b Process Scheduling. The other scheduling attributes may be ignored on some systems.

Linux' default scheduling policy is **SCHED\_OTHER**.

# [AUTHORS](#AUTHORS)

*Robert Love* &lt;rml@tech9.net&gt;, *Karel Zak* &lt;kzak@redhat.com&gt;

# [SEE ALSO](#SEE_ALSO)

[**nice**(1)](/man/os/util-linux/nice.1), [**renice**(1)](/man/os/util-linux/renice.1), [**taskset**(1)](/man/os/util-linux/taskset.1), [**sched**(7)](/man/os/util-linux/sched.7)

See [**sched\_setscheduler**(2)](/man/os/util-linux/sched_setscheduler.2) for a description of the Linux scheduling scheme.

# [REPORTING BUGS](#REPORTING_BUGS)

For bug reports, use the *issue tracker* &lt;https://github.com/util-linux/util-linux/issues&gt;.

# [AVAILABILITY](#AVAILABILITY)

The **chrt** command is part of the util-linux package which can be downloaded from *Linux Kernel Archive* &lt;https://www.kernel.org/pub/linux/utils/util-linux/&gt;.

2026-09-25 util-linux 2.42.4

---

Document: chrt(1) from util-linux 2.42.4-r0 (Chainguard OS)
