mra*_*ray 6 priority launchd process macos
我使用了一个很好的(免费)进程管理器,称为ATMonitor for Mac OS X,它有很多很酷的隐藏功能,其中之一是能够单击正在运行的进程并将“renice”从 +20(较低优先级)设置为-20(最高优先级)。
最好的部分是它在重新启动之间保持不变。所以你想让 XYZ 一直得到充分的关注,你设置一次就完成了。
我想在运行特定守护程序的 iPad 上做同样的事情(renice 进程),但我不知道如何永久设置 renice。
我可以做一次,它工作正常,但设置在重新启动时丢失。我在某处阅读。
现在,对于永久重置进程的优先级,这不能直接完成。但是,您可以使用一个 shell 脚本来伪造它,该脚本启动应用程序然后立即使用它。给该脚本一个“.command”扩展名,它将在 GUI 中双击。不是很优雅,但它完成了工作。
但正如它所说,不是很优雅,我不认为这就是 ATMonitor 的做法。
我发现了这个问题,他们提供了一种方法来将其作为启动参数,但没有明显的方法将其保存为持久值。例如,如果程序不打算由launchd 启动。
我如何为每个可执行二进制文件设置一个永久的 renice 级别,独立于其 PID、何时、如何或为什么启动?
小智 5
经过大量研究,我找到了一种方法来创建一个可以启动和更新程序的 AppleScript。它还将为您处理整个管理员密码。只需将 xxxxxxxxx 替换为您自己的密码即可。我已经将它与一系列程序一起使用,并且似乎都有效。老实说,我不记得为什么我把它延迟了 1 秒;我想我只是想确保该程序在它被拒绝之前已经启动。我确定这个脚本有变化。这样做的好处是您不必打开活动监视器、查找进程 ID 等。这个脚本会为您完成所有这些工作。我只是将每个脚本保存为一个应用程序,启动它,一切都很顺利。顺便说一句,虽然我喜欢 atMonitor,但据报道它确实有突然挂起系统的倾向。
tell application "Safari"
activate
delay 1
end tell
tell application "System Events" to set unixID to unix id of process "Safari"
do shell script ("renice -20 " & unixID) password "xxxxxxxxx" with administrator privileges
Run Code Online (Sandbox Code Playgroud)
有关 iPad 的问题在本网站上属于题外话,因为它被视为“电子设备”;请参阅常见问题解答。
针对 Mac OS X 的回答:
atMonitor 执行的更改实际上不会在重新启动之间保留。当应用程序和 atMonitor 再次运行时,它们会被重新应用。如果退出 atMonitor 并重新启动重新注册的应用程序,其良好值将再次为 0(使用nice中的列进行验证ps axl)。所以这个方法需要你运行atMonitor。
除此之外,由于您可以直接运行实际的二进制文件,例如,/Applications/Firefox.app/Contents/MacOS/firefox-bin而不是,因此不可能open -a Firefox在不实际修补二进制文件本身的情况下使此更改独立于应用程序的启动方式(这通常介于疯狂复杂和完全不可能之间)
您可以执行我在此处解释的操作,但不要传递命令行参数,而是通过 启动应用程序nice。只要您使用open、Dock、双击应用程序包等来启动它,这将与真实的应用程序没有区别。如果您重命名真正的二进制文件并为 shell 脚本指定其原始名称(不更改 ,Info.plist甚至硬-编码的调用将通过您的nice脚本)。这仍然允许用户自己启动(现已重命名)二进制文件,但除此之外,它还能工作。
| 归档时间: |
|
| 查看次数: |
17007 次 |
| 最近记录: |