我有一个python脚本使用SIGSTOP和.SIGCONT命令与os.kill来暂停或恢复一个进程。有没有办法确定相关PID是处于暂停还是恢复状态?有没有办法确定Linux PID是否暂停?
7
A
回答
4
您可以从其/ proc目录(/proc/<PID>
)中找到有关进程的信息。
open(os.path.join('/proc', str(pid), 'stat')).readline().split()[2]=='T'
编辑:这一次算式修正了原来的一个(可能是罕见的)错误:
re.sub(r'\(.*\)', '()', open(os.path.join('/proc', str(pid), 'stat')).readline()).split()[2]=='T'
4
调用ps并检查STAT值。 D不间断睡眠(通常为IO) R正在运行或可运行(在运行队列中) S可中断睡眠(等待事件完成) T由作业控制信号或因为正在跟踪而停止。 W分页(自2.6.xx内核以来无效) X dead(永远不会看到) Z已停止(“僵尸”)进程已终止但未由其父节点收回。
+0
谢谢你,我使用ps axo fname,stat,pid,并且就像你说的那样工作,我不知道STAT值是为了那个。 – CobraBytez 2011-05-16 18:42:43
2
您可以使用psuti升:具体来说,你可以用这个Python表达式查找其运行状态
>>> import psutil
>>> pid = 1243
>>> p = psutil.Process(pid)
>>> p.status
0
>>> str(p.status)
'running'
>>> p.status == psutil.STATUS_RUNNING
True
>>>
>>> p.suspend()
>>> p.status
3
>>> str(p.status)
'stopped'
>>> p.status == psutil.STATUS_STOPPED
True
>>>
>>> p.resume()
>>> str(p.status)
'running'
>>>
相关问题
- 1. 有没有办法用spotify api暂停?
- 2. 有没有办法暂停/恢复SwingWorker
- 3. 是否有使用PId停止和暂停mplayer的命令?
- 4. 有没有办法确定Firebase用户的UID是否有效?
- 5. 有没有办法确定JDBC事务是否有效?
- 6. 有没有办法确定Java System.in是否是“交互式”?
- 7. 有没有办法确定neo4j数据库是否已关闭?
- 8. 有没有办法确定页面是否被压缩?
- 9. 有没有办法确定任务是否被重新分配?
- 10. 有没有办法确定输入流是否只读?
- 11. 有没有办法从其他tty暂停gnome?
- 12. 有没有办法从页面内恶意暂停Flash电影?
- 13. 有没有办法在暂停状态下启动进程?
- 14. 有没有办法暂停animateWithDuration一旦启动?
- 15. 有没有办法无限期地暂停一个线程?
- 16. 有没有办法在C++中暂停OS关机或重启?
- 17. 有没有办法确定IIS或网站已被停止?
- 18. 是否有任何命令停止和暂停使用PId的mplayer
- 19. 有没有办法暂停Python子进程,特别是在Ubuntu中?
- 20. 有没有办法确定一年是否有Swift中的闰月?
- 21. 有没有办法确定在Vim中是否已经定义了高亮区?
- 22. 有没有办法确定WebRequest期间是否发生重定向?
- 23. Androguard有没有办法确定某个方法是否可以实际调用?
- 24. 有没有办法用python启动/停止linux进程?
- 25. 有没有办法确定nexus one是开发者手机?
- 26. 有没有办法确定Linux中可用视频RAM的数量?
- 27. 有没有办法确定用户是否使用宽带或拨号
- 28. WebAudio:有没有办法确定节点是否连接到另一个节点?
- 29. 有没有办法确定电子邮件是否到达目的地?
- 30. 有没有办法确定GWT代码是否在开发模式下运行?
不使用os.path.join!...等等,这是纯粹的linux问题。 – janislaw 2011-08-04 13:46:01
@janislaw - 谢谢。 – 2011-08-04 15:35:57