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

# Bash 的 choom 命令

choom [OPTION] [--] [COMMAND] [ARGS ...]

!subtitle:功能

查看或调整进程的 OOM(Out-Of-Memory)评分;或以指定的 OOM 调整评分执行命令。

Linux 内核在内存耗尽时会启动 OOM Killer,选择一个 OOM 评分最高的进程杀掉。

!subtitle:类型

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

!subtitle:参数

  • OPTION 选项:

    • -p, --pid - 要查看或调整 OOM 评分的的进程ID

    • -n, --adjust - 要设置的 OOM 调整评分,取值范围是 0 到 1000,越大越容易被杀

    • --help - 显示帮助

    • --version - 显示版本

  • COMMAND - 要执行的命令

  • ARGS - 命令的参数列表

# 示例

!subtitle:查看和调整进程的 OOM 评分

$ choom -p $$                                                   # 查看当前 shell 进程的 oom 评分
pid 944375's current OOM score: 666
pid 944375's current OOM score adjust value: 0
$ choom -p $$ -n 500                                            # 将调整评分设为 500
pid 944375's OOM score adjust value changed from 0 to 500
$ choom -p $$                                                   # 再次查看当前 shell 进程的 oom 评分
pid 944375's current OOM score: 1000
pid 944375's current OOM score adjust value: 500
  • 原始评分为 666

  • 调整评分被设为 500

  • 调整后评分为 666 + 500,超过了上限 1000 因此缩限到 1000

!subtitle:以指定的 OOM 调整评分执行命令

$ choom -n 1000 -- tail -f /var/log/syslog                      # 以 1000 的调整评分执行 tail -f /var/log/syslog
  • 1000 的调整评分执行 tail -f /var/log/syslog,内存不足时会优先杀死此进程

# 推荐阅读

# 手册

CHOOM(1)                         User Commands                        CHOOM(1)

NAME
       choom - display and adjust OOM-killer score.

       choom -p PID

       choom -p PID -n number

       choom -n number [--] command [argument ...]

DESCRIPTION
       The choom command displays and adjusts Out-Of-Memory killer score
       setting.

OPTIONS
       -p, --pid pid
           Specifies process ID.

       -n, --adjust value
           Specify the adjust score value.

       -h, --help
           Display help text and exit.

       -V, --version
           Print version and exit.

NOTES
       Linux kernel uses the badness heuristic to select which process gets
       killed in out of memory conditions.

       The badness heuristic assigns a value to each candidate task ranging
       from 0 (never kill) to 1000 (always kill) to determine which process is
       targeted. The units are roughly a proportion along that range of
       allowed memory the process may allocate from based on an estimation of
       its current memory and swap use. For example, if a task is using all
       allowed memory, its badness score will be 1000. If it is using half of
       its allowed memory, its score will be 500.

       There is an additional factor included in the badness score: the
       current memory and swap usage is discounted by 3% for root processes.

       The amount of "allowed" memory depends on the context in which the oom
       killer was called. If it is due to the memory assigned to the
       allocating task’s cpuset being exhausted, the allowed memory represents
       the set of mems assigned to that cpuset. If it is due to a mempolicy’s
       node(s) being exhausted, the allowed memory represents the set of
       mempolicy nodes. If it is due to a memory limit (or swap limit) being
       reached, the allowed memory is that configured limit. Finally, if it is
       due to the entire system being out of memory, the allowed memory
       represents all allocatable resources.

       The adjust score value is added to the badness score before it is used
       to determine which task to kill. Acceptable values range from -1000 to
       +1000. This allows userspace to polarize the preference for oom killing
       either by always preferring a certain task or completely disabling it.
       The lowest possible value, -1000, is equivalent to disabling oom
       killing entirely for that task since it will always report a badness
       score of 0.

       Setting an adjust score value of +500, for example, is roughly
       equivalent to allowing the remainder of tasks sharing the same system,
       cpuset, mempolicy, or memory controller resources to use at least 50%
       more memory. A value of -500, on the other hand, would be roughly
       equivalent to discounting 50% of the task’s allowed memory from being
       considered as scoring against the task.

AUTHORS
       Karel Zak <[email protected]>

SEE ALSO
       proc(5)

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

AVAILABILITY
       The choom 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-10-23                          CHOOM(1)
本文 更新于: 2026-03-06 09:52:29 创建于: 2026-03-06 09:52:29