从python运行linux命令
我需要从python运行此linux命令,并将输出分配给变量。
ps -ef | grep rtptransmit | grep -v grep
我试过使用pythons命令库来做到这一点。
import commandsa = 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
可以直接搜索特定进程的命令。
以上是 从python运行linux命令 的全部内容, 来源链接: utcz.com/qa/407593.html