我正在尝试编写脚本来使用cpulimit控制VM n KVM的cpu使用率。使用cpulimit我可以通过pid say 2112限制VM的cpu使用率,方法是:



我想写一个可以打开界面的脚本



可以调用任意次,我将覆盖现有限制。我可以通过将限制值添加为正在运行的cpulimit进程的运行时参数来覆盖现有限制。类似于subprocess.Popen(...,stdin = subprocess.PIPE)。对于如何获取正在运行的进程并提供运行时参数,我有些困惑。例如(不带脚本):



现在它将为该过程设置一个上限,现在我只需输入



覆盖现有限制。我想编写这种行为的脚本。如果您可以提供有关如何编写此脚本的指针或想法,那将是很棒的。非常感谢

  • 濑户
  • 最佳答案

    编辑:如果您需要与现有的cpulimit对话,则应查看How to write data to existing process's STDIN from external process?的可接受答案

    基本上,做

    (while [ 1 ]; do sleep 1; done) | ./cpulimit -p 2112 -l 50.
    

    当您启动cpulimit时,因为它的输入必须是管道。

    然后,从Python写入/proc/{pid_of_cpulimit}/fd/0

    如果您生成了一个带有
    process = subprocess.Popen(['./cpulimit', '-p', '2112', '-l', '50'], stdin=subprocess.PIPE)
    

    做就是了
    process.communicate(input='40')
    process.communicate(input='80')
    

    07-24 12:30