我需要从python运行这个linux命令并将输出分配给一个变量。从python运行linux命令
ps -ef | grep rtptransmit | grep -v grep
我试过使用pythons命令库来做到这一点。
import commands
a = commands.getoutput('ps -ef | grep rtptransmit | grep -v grep')
但一个得到切断的结束。我得到的输出是:
'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
有谁知道如何从被截断停止输出或任何人可以提出另一种方法?
-1无用的'grep'和'shell = True'。 – lunaryorn 2012-03-16 10:58:56
如果您想在命令中使用管道,则需要'shell'。关于'grep',我实际上只是复制并粘贴了问题中的命令。我怀疑那是第二个'grep',因为有时我们执行的'grep'命令也显示为grep-ed,因此需要删除。这实际上可以避免使用'grep [r] tptransmit' – fajran 2012-03-16 11:02:46
我知道'shell = True'需要在命令中使用管道,并且第二个'grep'将从第一个'grep'命令中删除过滤的过程列表。但是在这种情况下,管道和'grep'都是多余的。 – lunaryorn 2012-03-16 11:07:13