GNU/Linux >> Linux の 問題 >  >> Linux

特定のプロセスで実行されるユーザー、pid、およびコマンドのみを取得するにはどうすればよいですか? (Ubuntu 11.10)

-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

Linux
  1. CentOS / RHEL :特定のコマンドを実行しているユーザーを見つける方法は?

  2. Linux で特定のユーザーに対して特定のコマンドを無効にする方法

  3. Ubuntu でプロセス ID を見つけるにはどうすればよいですか?

  1. UNIX/Linux システムで実行中のプロセスにコマンドライン引数を渡す方法は?

  2. nohupプロセスを強制終了するプロセスIDを取得するには?

  3. Linux で特定のプログラムのプロセス ID を設定する方法

  1. ターミナルで現在の日付と時刻を取得し、ターミナルでカスタム コマンドを設定するにはどうすればよいですか?

  2. プロセスの pid を取得し、シェル スクリプトで kill -9 を呼び出す方法は?

  3. 特定のプロセスの .pid ファイルを見つける方法