如何在 Linux 上使用 nice 和 renice 设置进程优先级如何在 Linux 上使用 nice 和 renice 设置进程优先级如何在 Linux 上使用 nice 和 renice 设置进程优先级如何在 Linux 上使用 nice 和 renice 设置进程优先级
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Linux 上使用 nice 和 renice 设置进程优先级

nice 和 renice 命令可让您通过调整进程的优先级来微调内核处理进程的方式。阅读本教程,了解如何在 Linux 和类 Unix 操作系统(如 macOS)中使用它们。

这都是过程的问题

在您的 Linux 或类 Unix 计算机中,甚至在您启动要使用的应用程序之前,就会有许多进程在运行。这些进程中的大多数是 Linux 本身的重要元素或图形桌面环境的支持进程。幕后发生了很多事情。当然,可供使用的系统资源和 CPU 时间有限。 Linux 内核是所有这些进程的控制器。

内核必须决定哪些进程现在得到关注和资源,哪些必须等待。内核不断地处理进程和优先级,以确保计算机尽可能平稳地运行,并确保所有进程都能获得适当的份额。一些过程得到优惠待遇。它们对于计算机的一般操作非常重要,以至于它们的需求必须先于您的浏览器。

不错的价值

用于确定内核如何对待进程的标准之一是 nice 值。每个过程都有一个很好的价值。 nice 值是一个介于 -19 到 20 之间的整数。所有标准进程都以 nice 值为零启动。

这里的诀窍是 nice 值越高,您的进程对其他进程越好。换句话说,一个高 nice 值告诉内核这个进程很乐意等待。负数与友善相反。负 nice 值越大,过程越自私。它试图获得尽可能多的 CPU 时间,而不考虑其他进程。

我们可以使用 nice 命令在进程启动时设置 nice 值,我们可以使用 renice 来调整 正在运行的进程的良好价值。

漂亮的命令

我们可以使用 nice 命令在启动程序时调整它的 nice 值。这允许我们增加或减少内核赋予该进程相对于其他进程的优先级。

假设一位程序员编写了一个名为 ackermann 的程序。这将计算阿克曼函数。它是 CPU 和内存密集型的。程序员可以使用以下命令启动程序:

./ackermann

我们可以使用top命令来查看正在运行的程序。

top

我们可以在 top 中看到 ackermann 程序的详细信息。 nice 值是“NI 列”中的数字。正如我们所料,它设置为零。

让我们重新启动它,这次降低要求。我们将为 ackermann 程序设置一个 nice 值 15,如下所示。输入 nice,一个空格,-15,另一个空格,然后是您要启动的程序的名称。在我们的示例中,我们虚构的程序员正在使用 ./ackermann。

nice -15 ./ackermann

请注意,“-15”不是负十五。正十五。需要“-”来告诉 nice 我们正在传递一个参数。要表示负数,您必须键入两个“-”字符。

如果我们现在再次启动 top,我们可以看到 ackermann 行为的变化。

top

如果 nice 值为 15,ackermann 不会消耗最多的 CPU 时间。 GNOME 和 Rhythmbox 都使用更多。我们稍微控制了 ackermann。

现在让我们做相反的事情,给 ackermann 一个负的 nice 值。注意两个“-”字符的使用。要使应用程序更自私、更不友善,您必须使用 sudo。任何人都可以让他们的应用程序变得更好,但只有超级用户才能让他们变得更自私。

sudo nice --10 ./ackermann

让我们运行 top 看看有什么不同。

top

这次 ackermann 的 nice 值为 -10。它又回到了顶线,并且比以前消耗了更多的 CPU 时间。

renice 命令

renice 命令让我们可以调整正在运行的进程的 nice 值。我们不需要停止它并使用 nice 重新启动它。我们可以即时设置一个新值。

renice 命令将进程的进程 ID 或 PID 作为命令行参数。我们可以从 top 的“PID”列中提取进程 ID,或者我们可以使用 ps 和 grep 为我们找到它,如下。显然,您将键入您的用户名而不是 dave,并键入您感兴趣的进程的名称而不是 ackermann。

ps -eu dave | grep ackermann

现在我们有了 PID,我们可以将其与 renice 一起使用。我们将把 ackermann 设置回一个 nice 值为 5 的更好的行为。要更改正在运行的进程的 nice 值,您必须使用 sudo。请注意,5 参数中没有“-”。正数不需要一个,负数只需要一个而不是两个。

sudo renice -n 5 2339

我们确认 renice 已经改变了 nice 值。它向我们展示了旧价值和新价值。

内核通常在处理优先级和分配 CPU 时间和系统资源方面做得很好。但是如果你有一个长时间的 CPU 密集型任务要运行并且你不关心它何时结束,那么如果你为该任务设置一个更高的 nice 值,它会让你的计算机运行得更流畅一些。这对每个人都会更好。

Linux Commands
Files tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc
Processes alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap
Networking netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld

RELATED: Best Linux Laptops for Developers and Enthusiasts

©2015-2025 艾丽卡 support@alaica.com