我在 OSX 上运行了一个 OCR 软件(带有 gui 等),它可以监视文件夹并对放入其中的 PDF 进行 OCR。有时,该过程会开始出现问题,消耗大量系统内存和 CPU,并无限期地在特定 PDF 上运行。
- 我想知道在这种情况下如何监视该进程并终止它。
- 我还想防止它导致系统停止运行,例如通过某种方式使用沙盒。
答案1
您可以使用内置的 sandbox(7) 功能在 OS X 上对应用程序进行沙盒处理。请参阅 sandbox(7)、sandbox-exec(1) 和 sandboxd(8) 的手册页。此沙盒脚本存储库也可能有用。
OS X 10.7 (Lion) 将带来更多应用程序沙盒功能,但苹果网站上的详细信息很少。我猜想它与上述功能有关。
答案2
普通方法ps
可以帮助解决这个问题:我们运行一个进程,该进程根据ps
经过的挂钟时间考虑每个进程消耗的 CPU 秒数,并提醒系统管理员查看该比率是否过大;如果您愿意,当然可以将其与特定进程的终止联系起来。
答案3
要终止进程,您需要找到其进程号。
$ ps a| grep _process_name_
结果如下:
样本:
$ ps a|grep Safari
31755 s000 R+ 0:00.00 grep Safari
现在终止该进程:
kill 31755
kill 命令有一些开关,有时你需要使用
kill -kill _process number_
要获取完整选项列表,请使用main kill