-o 引数を探していると思います:
<ブロック引用>-o 形式:
ユーザー定義の format.format は、空白区切りまたはコンマ区切りのリストの形式の単一の引数であり、個々の出力列を指定できます。認識されるキーワードは、以下の STANDARDFORMAT SPECIFIERS セクションで説明されています。ヘッダーは必要に応じて名前を変更できます (ps -o pid,ruser=RealUser -o comm=Command)。すべての列ヘッダーが空の場合 (ps -o pid=-o comm=)、ヘッダー行は出力されません。幅の広いヘッダーの場合、列幅は必要に応じて増加します。これは、WCHAN(ps -o pid,wchan=WIDE-WCHAN-COLUMN -o comm) などの列を広げるために使用できます。明示的な幅制御 (ps opid,wchan:42,cmd) も提供されます。ps -o pid=X,comm=Y の動作は、個人によって異なります。出力は、「X,comm=Y」という名前の 1 つの列、または「X」と「Y」という名前の 2 つの列です。疑わしい場合は、複数の -ooptions を使用してください。 PS_FORMAT 環境変数を使用して、必要に応じてデフォルトを指定します。 DefSysV と DefBSD は、デフォルトの UNIX または BSD 列を選択するために使用できるマクロです。
したがって、必要なコマンドは次のようになります (Ubuntu):
ps -o uid,pid,cmd -ef|grep python
OpenSolaris では、コマンドは次のとおりです:
ps -o ruser,pid,comm -ef|grep python
おそらく最も単純なものは次のようになります:
$ ps o uid=,pid=,cmd= -C python
1000 26126 python
そうすれば、 ps
からすべてを直接取得できます 何も解析する必要はありません。
ps
から マニュアルページ:
-o フォーマット
ユーザー定義形式。 format は、空白区切りまたはコンマ区切りのリストの形式の単一の引数であり、個々の出力列を指定する方法を提供します。 [...] ヘッダーは必要に応じて名前を変更できます (ps -o pid,ruser=RealUser -o comm=Command)。 すべての列ヘッダーが空の場合 (ps -o pid=-o comm=)、ヘッダー行は出力されません。
-C cmdlist
Select by command name. This selects the processes whose executable
name is given in cmdlist.
-C
python
を実行している場合、オプションは機能します Python がスクリプトを実行している場合ではありません。その場合、 -C scriptname.py
を使用する必要があります
ps -eo user,pid,cmd | grep [p]ython
例:
$ ps -eo user,pid,cmd | grep [p]ython
root 1056 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers
root 1735 /usr/bin/python3 /usr/bin/fail2ban-server -xf start
user 16613 /usr/bin/python3 /usr/share/system-config-printer/applet.py
説明:
-e
すべてのプロセス-o
ユーザー定義形式user,pid,cmd
ユーザー、プロセス ID、コマンド列を表示
注: -f
を使用する場合 -o
で 他の人が示唆しているように、エラーが発生する可能性があります。これは、これらのパラメーターの両方が出力形式を制御し、そのうちの 1 つだけを使用する必要があるためです:
$ ps --help | grep -A 2 "output format"
*********** output format **********
-o,o user-defined -f full
-j,j job control s signal