有没有一种方法可以确定Linux的PID是否暂停?

2024-10-04 01:25:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个使用SIGSTOP和.SIGCONT命令的python脚本os.杀死暂停或继续一个过程。有没有办法确定相关的PID是处于暂停状态还是恢复状态?在


Tags: 命令脚本os过程状态pid办法暂停状态
3条回答

调用ps并检查STAT值。 D不间断睡眠(通常为IO) R正在运行或可运行(运行队列中) S可中断睡眠(等待事件完成) T被作业控制信号或正在被跟踪而停止。 W paging(自2.6.xx内核起无效) X死亡(不应该被看到) Z失效(“僵尸”)进程,终止但未被其父进程获取。在

您可以从进程的/proc目录(/proc/<PID>)中找到有关进程的信息。具体地说,可以通过以下python表达式找到它的运行状态:

open(os.path.join('/proc', str(pid), 'stat')).readline().split()[2]=='T'

编辑:下一个表达式修复了原始表达式的一个(可能很少见)错误:

^{pr2}$

您可以使用psutil:

>>> 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'
>>>

相关问题 更多 >