有没有办法在 Mac OS X 中设置进程的优先级?

Dan*_*ier 67 mac priority process macos

我在 Mac OS X 上有一个以 100% CPU 运行的后台进程。因此所有其他应用程序都非常慢。

我想将此过程设置为不超过 50%,以便我的应用程序可以更好地运行。我怎样才能做到这一点?

dmc*_*ten 68

从命令行(Terminal.app或其他)使用niceand renice,就像在其他 unix 上一样。

nice启动进程时使用:

nice -n <priority> <command> <arguments to command>
Run Code Online (Sandbox Code Playgroud)

默认优先级为零,正值表示“更好”(即较低的优先级),负值表示“不太好”(较高的优先级)。看起来 Mac OS 从 +10 运行到 -10。

使用renice改变已经运行(从一个进程的优先级renice手册页10.5):

renice priority [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...]  
renice -n increment [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...]
Run Code Online (Sandbox Code Playgroud)

你在这里感兴趣的部分是pid位。这是作业的进程 ID,您可以使用ps -u <your username>并查找进程名称来找到它,但我更喜欢top -o在这种情况下,因为您感兴趣的进程将靠近顶部。

注意:如果没有超级用户权限,您永远无法提高进程的优先级。对于普通用户,nicerenice是单行道。优先级的微小变化会对运行时间产生很大的影响。所以在你理解它之前放轻松。


小智 21

您可以使用以下命令:

renice -n # PID
Run Code Online (Sandbox Code Playgroud)

在哪里:

  • #是一个应该大于 0 的数字(否则你会将你的进程移动到更高的优先级)
  • PID是您可以通过top在终端应用程序 (utilities/terminal.app) 上键入来查看的进程 ID

如果是系统进程或其他用户进程,则应键入:

sudo renice -n 10 PID
Run Code Online (Sandbox Code Playgroud)

它会询问您的密码(如果您是 sudoer)。至于数字,我会推荐 10 或 19(甚至更低的优先级)。

请注意,这将更改优先级而不是 CPU 使用率。如果您没有运行其他需要 CPU 的进程,或者您的 Mac(Core 2 Quad Core)上有多个 CPU,该进程可能仍会使用 100% 的 CPU。


Wil*_*ken 8

renice 20 $(pgrep ImageOptim)
Run Code Online (Sandbox Code Playgroud)

或者使用您的程序名称而不是 ImageOptim

  • 此外,使用`renice -20` 会给进程尽可能高的优先级,例如在编译像八度这样的大程序时。`renice 20` 赋予进程最低的优先级。 (2认同)

Jac*_*ane 8

  • 如果你的过程是应用或应用的辅助工具,而不是一个系统的过程,你不想做nice或者renice在每次系统启动时,你可以给它一个镜头到AppPolice。它是开源和免费的。您可以在此处下载它,或使用homebrew命令安装它brew cask install AppPolice

  • 另一种选择是一个非常好的命令行任务管理器 GUI,名为htop. 您可以查看所有进程并nice通过F7和 和F8快捷方式调整它们的值。 (请注意,负值nice更优先,正值相反)

要安装它:

  • 如果您还没有自制软件,请安装它。
  • brew install htop在终端中运行此命令
  • 现在您可以htop在终端中查看和管理进程或sudo htop覆盖所有系统。


小智 6

还有许多 GUI 实用程序,例如免费的 BeNicer 和Process Wizard(我以前最喜欢的),以及 1.99 美元的Freezer版本,这是我的新宠。这些都适用于运行应用程序。

  • BeNicer 和 Process Wizard 都是 PowerPC 应用程序,不能在最新版本的 OSX 上运行 (3认同)