有什么方法可以在Mac OS X中设置进程的优先级?


48

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

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

Answers:


48

从命令行(Terminal.app或其他方式)使用nicerenice,就像在其他Unix上一样。

nice在启动进程时使用:

nice -n <priority> <command> <arguments to command>

默认优先级为零,正值是“ nicer”(较低的优先级),负值是“不太好”(较高的优先级)。看起来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 ...]

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

注意:没有超级用户特权,您将永远无法增加进程的优先级。对于普通用户,nicerenice是单行道。优先级的微小变化会对运行时间产生重大影响。因此,请对此轻松,直到您了解为止。


以及如何处理已经运行的进程?它运行了2个小时,我不想再次启动它并失去2个小时的处理时间
Daniel Cukier 09年

15

您可以使用以下命令:

renice -n # PID

哪里:

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

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

sudo renice -n 10 PID

它将要求您输入密码(如果您使用sudoer)。至于数字,我建议10或19(甚至更低的优先级)。

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


6
renice 20 $(pgrep ImageOptim)

或使用程序名称代替ImageOptim


1
此外,renice -20例如,在编译像octave这样的大程序时,使用为进程提供最高的优先级。renice 20使进程具有最低优先级。
nyxee

5

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


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

Freezer是否仍在使用较新的OS版本?
ylluminate

请检查我的答案以寻求其他选择,AppPolice
JacopKane

2
  • 如果您的进程是应用程序或应用程序助手实用程序,而不是系统进程,并且您不想执行此操作,nice或者renice在每次系统引导时都可以将其发送给AppPolice。它是开源的,免费的。您可以在此处下载。

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

要安装它:

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

0

您可以使用应用程序的PLIST文件中的变量,为守护程序永久设置好值(优先级)。要了解如何在终端窗口中键入MAN plist。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.