Следуя популярным ответам на этот вопрос и инструкции здесь Я создал код ниже в python 3:
p1 = subprocess.Popen(["ps", "-e", "-o", "pcpu,args"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
p2 = subprocess.Popen(["cut", "-c", "-132"], stdin=p1.stdout, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
p3 = subprocess.Popen(["awk", "NR>2"], stdin=p2.stdout, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
p4 = subprocess.Popen(["sort", "-nr"], stdin=p3.stdout, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
p5 = subprocess.Popen(["head", "-10"], stdin=p4.stdout, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
ps,err = p5.communicate()
psout = str(ps, 'utf-8')
Этот код вызывается каждую минуту или около того в цикле. Вопреки тому, во что меня заставили поверить, это все еще создает зомби. Что я делаю неправильно?
РЕДАКТИРОВАТЬ: зомби при запуске кода:
$ ps -eo pid,ppid,state,cmd | awk '$3 == "Z"'
14441 11232 Z [ps] <defunct>
14442 11232 Z [cut] <defunct>
14445 11232 Z [sort] <defunct>
ps
. - person heemayl   schedule 24.12.2017Z
). Здесьps -eo pid,ppid,state,cmd | awk '$3 == "Z"'
- person heemayl   schedule 24.12.2017