psutil - 暂停进程

0 投票
2 回答
3174 浏览
提问于 2025-04-17 12:45

我正在为Linux写一个Python脚本,这个脚本的功能是当满足特定条件时暂停一个进程,然后再恢复它。为此,我使用了psutil这个库(http://code.google.com/p/psutil)。

我遇到的问题有点奇怪。当我在Python命令行中运行时,一切都正常——进程可以被暂停,然后再恢复。但是,当我把相同的功能放到一个脚本文件中并尝试运行时,却出现了错误:

AttributeError: 'Process' object has no attribute 'suspend'

代码片段:

p = psutil.Process(19931)
p.suspend()
print 'suspended'
time.sleep(10)
p.resume()
print 'resumed'

当然,19931是我在后台启动的进程的PID(进程标识符),我想要暂停这个进程。

有没有人有一些想法或者提示?我安装的psutil是最新版本,来自Google代码。

2 个回答

0

当我发现Python在交互式命令行和执行脚本时表现不一样时,我首先会怀疑是不是在运行不同版本的Python。这种情况很容易发生,特别是当你在脚本文件中用类似下面的方式指定了解释器时:

#!/usr/bin/python

不过这只是个不太可能的原因,因为根据psutil网站的信息,它应该能很好地支持从2.4到3.3的Python版本。而且,你的代码在我这台机器上运行得很好(内核2.6.32,Python 2.6.6)。

2

我知道这条信息有点老了,但对于最近遇到这个问题的人来说,

这段代码在我这里(Python 3.7.3)运行得很好:

psutil.Process(pid=19931).suspend()

而且类似的

psutil.Process(pid=19931).resume()

不过你得确保你提到的那个进程还在运行。

撰写回答