0
$ ps aux | grep file1.py
xyz    6103  0.0  0.1  33476  6480 pts/1    S+   12:00   0:00 python file1.py
xyz    6188  0.0  0.1  33476  6472 pts/2    S+   12:05   0:00 python file1.py
xyz    7294  0.0  0.0   8956   872 pts/4    S+   12:49   0:00 grep --color=auto file1.py

プロセス 6103 が 12:00 に開始され、5 分後にプロセス 6188 が開始されました。両方のプロセスを見つける必要があります 6103,6188

pid_finder.py

import psutil

PROCNAME = "file1.py"

process = []
for proc in psutil.process_iter():
    if proc.name == PROCNAME:
        print proc

しかし、上記のスクリプトは何も出力しませんでした。「psutil」モジュールには、スクリプトのプロセスのpidを見つけるための他のオプションがあります。

psutil.test() は次の o/p を与えました...

xyz      6103  0.0  0.2   33476    6480 /dev/pts/1    13:23   30:00  python
xyz      6188  0.0  0.2   33476    6480 /dev/pts/2    13:23   30:00  python
xyz      8831  0.0  1.0  430612   39796 ?             13:31   30:03  gedit
xyz      8833  0.0    ?   14540     808 ?             13:31   30:00  gnome-pty-helper
xyz      8835  0.0  0.1   23636    5008 /dev/pts/5    13:31   30:00  bash
xyz      9367  0.0  0.2   51580    7740 /dev/pts/4    13:42   30:00  python
4

2 に答える 2

1

os.popen()を心配していなければ、このようなものはどうですか

#!/usr/bin/python
import os
PROCNAME = "file1.py"
pids = []
for proc_data in os.popen('/bin/ps -eo pid,comm,args'):
    bits = proc_data.strip().split()
    (pid, comm ) = bits[0:2]
    args = " ".join( bits[3:] )
    if args == PROCNAME:
        pids.append( pid )

print pids

これにより、プロセスの引数に基づいて物事を見つけることができます。

必要に応じて、comm と args が 1 つの文字列になるように変更できます。

    pid = bits[0]
    comm_and_args = " ".join( bits[1:] )
于 2012-10-18T08:29:20.453 に答える
0

読んでくださいpidof

man pidof
于 2012-10-18T07:13:55.963 に答える