Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从python劫持终端stdin_Python_Linux_Terminal_Stdin_Ps - Fatal编程技术网

从python劫持终端stdin

从python劫持终端stdin,python,linux,terminal,stdin,ps,Python,Linux,Terminal,Stdin,Ps,python中有没有办法劫持终端stdin?只有Unix的解决方案就可以了 我目前正在围绕顶部编写一个小包装器,因为我希望能够监视命名进程,例如所有正在运行的python实例。基本上我打电话给pgrep获取进程id,然后使用-p选项运行top 总的来说,这个脚本已经令人满意地工作了几年了,现在很好,警告说top-p只接受20个pid。。。。但是,如果出现了与名称模式匹配的新进程,我现在想调整脚本以更新对top的调用。这也相对不错,但是。。。每次我更新pid列表时,top中以交互方式设置的任何选项

python中有没有办法劫持终端stdin?只有Unix的解决方案就可以了

我目前正在围绕顶部编写一个小包装器,因为我希望能够监视命名进程,例如所有正在运行的python实例。基本上我打电话给pgrep获取进程id,然后使用-p选项运行top

总的来说,这个脚本已经令人满意地工作了几年了,现在很好,警告说top-p只接受20个pid。。。。但是,如果出现了与名称模式匹配的新进程,我现在想调整脚本以更新对top的调用。这也相对不错,但是。。。每次我更新pid列表时,top中以交互方式设置的任何选项都会丢失,但当我停止并重新启动top时,这是自然原因。因此,我想以某种方式劫持终端stdin,以便能够回溯任何设置的影响,以便在更新pid列表后,我可以相应地设置它们,或者在必要时停止更新,例如,如果top正在等待用户的更多指示

现在,也许我试图实现的只是愚蠢的,还有更好的方法来实现,如果是这样的话,我将高度赞赏启蒙运动

哦。使用标记ps是因为标记top不存在,在这两个实用程序都相关之后,我将在这里新建以定义新标记


谢谢\p

你所做的听起来有点像黑客。我只想使用psutil编写一个Python脚本,它完全满足您的需要。无论您对什么信息感兴趣,psutil都应该将其提供给您,甚至更多

又快又脏:

import psutil
import time    

while True:
    processes = [ p for p in psutil.process_iter() if 'python' in p.name() ]

    for p in processes:
        # print out whatever information interests you
        print(
                 p.pid, 
                 p.name(), 
                 p.cpu_percent(),
                 p.io_counters().read_bytes,
                 p.io_counters().write_bytes
                )
    time.sleep(10)

文档链接:

我在解析此文件时遇到问题。你在说什么互动选项?我不知道你说的回溯是什么意思。你想通过stdin发送什么?也许贴一张你在做什么的日志?看看psutil嗨,罗伯特,也许你想在顶部的手册页上读一下它不是真的吗?真的什么?我对托普很熟悉。我只是想看看你的帖子,它让人困惑。嗨,罗伯特,我在写完之前意外地发送了回复。有关top中的交互模式,请参见第4节。在手册页中。所谓回溯,我只是指试图找出最后写入终端stdin的字符。我非常了解PSUTIL,但我在这里的目的不是重建top,而是在保持其正常功能的同时尝试添加一些功能。我不知道你从哪里知道我在给stdout写东西。但是,也许我的措辞很难理解,如果是这样的话,我表示歉意,并希望以上澄清一些问题