我在这里执行此代码时遇到问题
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的
答案 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