国际访客建议访问 Primers 编程伙伴 国际版站点 > Bash 教程 > chrt 以获得更好的体验。

# Bash 的 chrt 命令

chrt [OPTION] -p [PRIORITY] PID
chrt [OPTION] PRIORITY [COMMAND] [ARGS ...]

!subtitle:功能

查看或设置进程的调度策略和优先级;或以指定的进程优先级执行命令。

!subtitle:类型

可执行文件(/usr/bin/chrt),属于 util-linux

!subtitle:参数

  • OPTION 选项:

    • -a, --all-tasks - 设置检索进程下的所有任务(线程)

    • -m, --max - 查看优先级的取值范围

    • -p, --pid - 查看或设置的进程ID

    • -v, --verbose - 显示状态信息

    • --help - 显示帮助

    • --version - 显示版本

    • 策略选项:

      • -o, --other - 将调度策略设为 SCHED_OTHER(分时调度);这是 Linux 的默认调度策略

      • -f, --fifo - 将调度策略设为 SCHED_FIFO(先进先出调度);无时间片,可能饿死所有任务

      • -r, --rr - 将调度策略设为 SCHED_RR(轮流调度);有时间片,可能饿死低优先级任务;不指定策略时默认使用此选项

      • -b, --batch - 将调度策略设为 SCHED_BATCH(批处理调度)

      • -i, --idle - 将调度策略设为 SCHED_IDLE(闲时调度);用于低优先级任务

      • -d, --deadline - 将调度策略设为 SCHED_DEADLINE(截止时间调度);在截止时间前完成的硬实时调度策略

    • 调度选项:

      • -T, --sched-runtime nanoseconds - 指定 SCHED_DEADLINE 策略的运行时参数

      • -P, --sched-period nanoseconds - 指定 SCHED_DEADLINE 策略的周期参数

      • -D, --sched-deadline nanoseconds - 指定 SCHED_DEADLINE 策略的截止时间参数

      • -R, --reset-on-fork - 使用 SCHED_RESET_ON_FORKSCHED_FLAG_RESET_ON_FORK 标志

  • PRIORITY - 优先级;数值越大,优先级越高

  • COMMAND - 要执行的命令

  • ARGS - 命令的参数列表

# 示例

!subtitle:查看优先级的取值范围

$ chrt -m
SCHED_OTHER min/max priority	: 0/0
SCHED_FIFO min/max priority	: 1/99
SCHED_RR min/max priority	: 1/99
SCHED_BATCH min/max priority	: 0/0
SCHED_IDLE min/max priority	: 0/0
SCHED_DEADLINE min/max priority	: 0/0
  • 可以看到只有 SCHED_FIFOSCHED_RR 支持优先级

!subtitle:查看和设置进程调度策略和优先级

$ chrt -p $$                                            # 查看当前 bash 进程的调度策略和优先级
pid 944375's current scheduling policy: SCHED_OTHER
pid 944375's current scheduling priority: 0
$ sudo chrt -r -p 20 $$                                 # 将策略设为 SCHED_RR,优先级设为 20
$ chrt -p $$                                            # 再次查看当前 bash 进程的调度策略和优先级
pid 944375's current scheduling policy: SCHED_RR
pid 944375's current scheduling priority: 20

!subtitle:以指定的进程调度策略和优先级执行命令

$ chrt -i 0 tail -f /var/log/syslog                     # 以 SCHED_IDLE 策略执行 tail -f /var/log/syslog
  • 虽然 SCHED_IDLE 不支持优先级,但不能省略优先级参数,必须设置为 0

# 推荐阅读

# 手册

CHRT(1)                          User Commands                         CHRT(1)

NAME
       chrt - manipulate the real-time attributes of a process

SYNOPSIS
       chrt [options] priority command argument ...

       chrt [options] -p [priority] PID

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

POLICIES
       -o, --other
           Set scheduling policy to SCHED_OTHER (time-sharing scheduling).
           This is the default Linux scheduling policy.

       -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. The priority argument has
           to be set to zero.

       -i, --idle
           Set scheduling policy to SCHED_IDLE (scheduling very low priority
           jobs). Linux-specific, supported since 2.6.23. The priority
           argument has to be set to zero.

       -d, --deadline
           Set scheduling policy to SCHED_DEADLINE (sporadic task model
           deadline scheduling). Linux-specific, supported since 3.14. The
           priority argument has to 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) for
           more details.

SCHEDULING OPTIONS
       -T, --sched-runtime nanoseconds
           Specifies runtime parameter for SCHED_DEADLINE policy
           (Linux-specific).

       -P, --sched-period nanoseconds
           Specifies period parameter for SCHED_DEADLINE policy
           (Linux-specific). Note that the kernel’s lower limit is 100
           milliseconds.

       -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) 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).

           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
       -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
           Print version and exit.

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 -p PID

       Or set them:

          chrt -r -p priority PID

       This, for example, sets real-time scheduling to priority 30 for the
       process PID with the SCHED_RR (round-robin) class:

          chrt -r -p 30 PID

       Reset priorities to default for a process:

          chrt -o -p 0 PID

       See sched(7) for a detailed discussion of the different scheduler
       classes and how they interact.

PERMISSIONS
       A user must possess CAP_SYS_NICE to change the scheduling attributes of
       a process. Any user can retrieve the scheduling information.

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
       Robert Love <[email protected]>, Karel Zak <[email protected]>

SEE ALSO
       nice(1), renice(1), taskset(1), sched(7)

       See sched_setscheduler(2) for a description of the Linux scheduling
       scheme.

REPORTING BUGS
       For bug reports, use the issue tracker at
       https://github.com/util-linux/util-linux/issues.

AVAILABILITY
       The chrt command is part of the util-linux package which can be
       downloaded from Linux Kernel Archive
       <https://www.kernel.org/pub/linux/utils/util-linux/>.

util-linux 2.39.3                 2023-11-21                           CHRT(1)
本文 更新于: 2026-03-06 09:52:30 创建于: 2026-03-06 09:52:30