web-dev-qa-db-ja.com

実行中のプロセスをファイル名で表示しますか?

PuTTYを使用して、自分のサイトがあるLinuxサーバーに接続しています。

# ps aux | less

実行中のプロセスを表示します。しかし、これらのプロセスを実行しているファイルを表示したいですか?

私も試しました

# ps aux | grep <pid>

しかし、このエラーが発生します:

-bash: syntax error near unexpected token `newline'

それを行う正しい方法は何ですか?

12
user198989

ps aux | grep <pid>はシェルコマンドではありません。表記<pid>は、「そこにPIDを置く」ことを意味する一般的な規則です。たとえば、PIDが1234の場合、ps aux | grep 1234を実行します。これはあまり便利なコマンドではありません。ps u 1234を実行することもできます。

あなたの質問はあまり明確ではありません。 「ファイル名付き」とはどういう意味ですか?プロセス1234が実行している実行可能ファイルを確認する場合:

ls -l /proc/1234/exe

そのプロセスが開いているファイルを確認する場合:

ls -l /proc/1234/fd

引数付きの完全なコマンドラインを表示する場合:

tr '\0' '\n' </proc/1234/cmdline

コマンドを使用したい場合、lsof -p1234はプロセスが開いているすべてのファイルを表示します。 ps uww 1234は、完全なコマンドラインを含む、プロセス1234に関するさまざまな情報を示します。

以下を実行してみてください:

ps -ef
5
ennuikiller

まず、ps aux | grep <PID>は、 PID (プロセス識別子)が<PID>で表される特定のプロセスの詳細を表示する場合に便利です。

たとえば、(ps aux | grep 'firefox\|USER'は、firefoxまたはUSERを含む行のみを出力することを意味します):

ps aux | grep 'firefox\|USER'
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
terdon  9021  2.5 11.8 1950888 970832 ?      Sl   Apr03 108:41 /opt/firefox/firefox

したがって、firefoxinstanceのPIDは9021です。したがって、実行しようとしているコマンドを使用するには、<PID>9021に置き換えます。

ps aux | grep 9021
terdon  9021  2.5 11.5 1948776 942640 ?      Sl   Apr03 109:03 /opt/firefox/firefox

さて、「これらのプロセスを実行しているファイルを表示する」という意味がわかりません。これらのプロセスが使用しているファイルを表示する場合は、ps auxがその1つの方法です。次のコマンドを使用して、ファイル/usr/share/doc/nano/faq.htmlを開いたとします。

 firefox /usr/share/doc/nano/faq.html 

firefoxを使用してpsが開いたファイルを確認できました。

ps aux | grep firefox
terdon   31763 18.7  1.0 682916 84352 pts/10   Sl+  17:10   0:02 firefox /usr/share/doc/nano/faq.html

開かれたファイルは、firefoxに渡される引数の1つとして表示されます。 PIDが異なることに注意してください(現在は31763ではなく9021になっています)。これは、実行中のすべてのプログラムに固有のPIDがあるためです。


別の便利なコマンドはtopです。 -cスイッチを指定して実行すると、コマンドに渡された引数が表示され、-u <your user>を使用すると、ユーザー名で開始されたプロセスのみが表示されます(<your user>を実際のユーザーに置き換えます名前):

top -c -u terdon

これは私のローカルマシンでの出力です(ユーザーterdonは2つのプロセスしか実行していません)。

top - 17:14:41 up 3 days, 49 min, 14 users,  load average: 0.48, 0.54, 0.55
Tasks: 228 total,   1 running, 226 sleeping,   0 stopped,   1 zombie
%Cpu(s):  7.1 us,  5.5 sy,  0.0 ni, 86.5 id,  0.0 wa,  0.0 hi,  0.9 si,  0.0 st
KiB Mem:   8187940 total,  8007220 used,   180720 free,   349264 buffers
KiB Swap:  8191996 total,     5556 used,  8186440 free,  4173004 cached

  PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND                                                       
31573 terdon    20   0 24900 5576 1684 S   0.0  0.1   0:00.20 bash                                                          
31763 terdon    20   0  666m  77m  28m S   0.0  1.0   0:02.39 firefox /usr/share/doc/nano/faq.html                          

topによって表示される情報の説明については、SUの関連する質問の my answer を参照してください。

3
terdon

シェルの下の一部の文字は、<>? 「; ...

pIDはプロセスIDであり、grepは同様の数値を検出するため、grep PIDは役に立ちません...

0