python subprocess.check_output给出错误的输出

时间:2015-05-14 16:21:13

标签: python python-2.7

我在这里执行此代码时遇到问题

subprocess.check_output(['ps -ef | grep ftp | wc -l'],env=environ,shell=True)

当我从终端

执行时
ps -ef | grep ftp | wc -l

我得到“1”作为输出,这很好。

现在,我从我的python文件中执行与subprocess.check_output相同的代码,它给了我2.这很奇怪。任何想法为什么会发生。这是完整的代码:

 def countFunction():
    environ = dict(os.environ)
    return subprocess.check_output(['ps -ef | grep ftp | wc -l'],env=environ,shell=True)

 count = countFunction()     
 print count

编辑: 只是要更新,我没有任何ftp连接。所以命令行打印1命令,这很好。 谢谢 Arvind的

1 个答案:

答案 0 :(得分:2)

grep命令会找到自己:

$ ps -ef | grep ftp
wallyk  12546 12326  0 16:25 pts/3    00:00:00 grep ftp

如果您不想要,请排除grep命令:

$ ps -ef | grep ftp | grep -v ftp
$

最好将-f开关放到ps,以便不搜索命令行参数。这样,它就找不到grep ftp正在运行:

$ ps -e | grep ftp | wc -l
相关问题