当前位置: 首页 > 面试题库 >

从python运行linux命令

空鸿云
2023-03-14
问题内容

我需要从python运行此linux命令,并将输出分配给变量。

ps -ef | grep rtptransmit | grep -v grep

我试过使用pythons命令库来做到这一点。

import commands
a = commands.getoutput('ps -ef | grep rtptransmit | grep -v grep')

但是a结束了。我得到的输出是:

'nvr      20714 20711  0 10:39 ?        00:00:00 /opt/americandynamics/venvr/bin/rtptransmit setup_req db=media  camera=6  stream=video  substream=1  client_a'

但预期的输出是:

nvr      20714 20711  0 10:39 ?        00:00:00 /opt/americandynamics/venvr/bin/rtptransmit setup_req db=media  camera=6  stream=video  substream=1  client_address=192.168.200.179  client_rtp_port=6970  override_lockout=1  clienttype=1

有人知道如何阻止输出中断吗?有人可以建议其他方法吗?


问题答案:

ps显然限制了其输出以适合终端的假定宽度。您可以使用$COLUMNS环境变量或--columns选项覆盖此宽度ps

commands模块已弃用。使用subprocess得到的输出ps -ef,并在Python进行过滤。不要shell=True按照其他答案的建议使用,在这种情况下,它只是多余的:

ps = subprocess.Popen(['ps', '-ef', '--columns', '1000'], stdout=subprocess.PIPE)
output = ps.communicate()[0]
for line in output.splitlines():
    if 'rtptransmit' in line:
        print(line)

您可能还需要看一下pgrep可以直接搜索特定进程的命令。



 类似资料:
  • 问题内容: 如何从Qt4在Linux下运行命令行程序?当然,我想以某种可以使用的方式获得输出。我会将其用于,但是以后再知道它是一件好事。 问题答案:

  • 问题内容: 我对Java的经验不是很丰富,这使我发疯。我编写了一个Java程序,需要从命令行运行它。 我可以从命令行编译它,它将在该文件夹中创建所有类,但是当我尝试时说: 线程“主”中的异常java.lang.NoClassDefFoundError:FileManagement / Main 事实是,我已经在远程计算机上尝试了相同的过程,并且工作正常。它不适用于我的。 问题答案: 如果您的课程在

  • 问题内容: 我创建了以下名称为的命令文件: 当我从命令行运行上述脚本时: 它运行成功。 但是,当我在python中尝试以下操作时: 我得到错误: 问题答案: 您的命令将像这样运行WinSCP: 什么是无效的语法。。之后不能有空格。 这应该工作:

  • 问题内容: 如何从PHP脚本运行linux命令?我正在运行Linux Debian和PHP5。我希望能够向控制台发出命令。 我正在寻找的示例如下所示: 我还能回显该函数的输出吗? 问题答案: 使用运行任何命令。但是请注意不要执行任何用户输入,因为这可能严重损害服务器。 另外,请注意,大多数共享服务器都会阻止该功能,因此您将无法使用它。 最后,作为一种简写,您可以将要执行的命令包装在反引号中。

  • 我想创建一个运行多个python项目的脚本。每个项目都是阻塞的(意味着每个项目都应该永远运行),所以这个脚本必须并行运行每个项目。此外,我希望在关闭主shell之后,所有这些进程都关闭。这是我想出的shell代码 我尝试使用&使python进程异步运行,但是脚本在第二行之后没有继续,只有第一个项目在运行。 有没有一种方法可以运行所有的python进程?

  • 本文向大家介绍python脚本内运行linux命令的方法,包括了python脚本内运行linux命令的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python脚本内运行linux命令的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的Python程序设计有所帮助。