名为print的简单python3程序-pid.py正在运行:cat print-pid.py
import os
from time import sleep
print('my pid is',os.getpid())
sleep(1000)
python3 print-pid.py的输出是:
^{pr2}$
用bash命令获取pid。在ps aux|grep 'python3 print-pid.py'|grep -v grep |awk '{print $2}'
5421
我想得到python3打印程序的pid-pid.py当它与python的sbupaccess模块一起运行时。在
这是我的尝试:import subprocess
cmd = "ps aux|grep 'python3 print-pid.py'|grep -v grep |awk '{print $2}'"
result = subprocess.run(cmd, stdout=subprocess.PIPE,shell=True)
print(result)
结果把我弄糊涂了。在
完成进程(args=“ps aux | grep”python3打印-pid.py“| grep-v grep | awk'{print$2}'”,返回代码=0,stdout=b“”
eturncode=0表示bash命令成功执行,为什么是stdout=b''而不是{}?在
感谢Allan在评论中的替换和测试建议。在
对于bash命令ps aux|grep 'python3':import subprocess
cmd = "ps aux|grep 'python3'"
result = subprocess.run(cmd, stdout=subprocess.PIPE,shell=True)
print(result)
输出为:CompletedProcess(args="ps aux|grep 'python3'", returncode=0,
stdout=b'debian9 6569 0.0 0.2 31916 9376 pts/0 S+ 11:04 0:00 python3 print-p\ndebian9 6844 0.0 0.2 39860 11440 pts/2 S+ 11:13 0:00 python3\ndebian9 6929 0.0 0.0 16980 948 pts/2 S+ 11:17 0:00 grep python3\n')
但是对于bash命令ps aux|grep 'python3 print-pid.py':import subprocess
cmd = "ps aux|grep 'python3 print-pid.py'"
result = subprocess.run(cmd, stdout=subprocess.PIPE,shell=True)
print(result)
输出:CompletedProcess(args="ps aux|grep 'python3 print-pid.py'", returncode=1, stdout=b'')
为什么不打印?在stdout=b'' instead of stdout=b'debian9 6569 0.0 0.2 31916 9376 pts/0 S+ 11:04 0:00 python3 print-p\n
debian9 6929 0.0 0.0 16980 948 pts/2 S+ 11:17 0:00 grep python3 print-pid.py\n'