UNIXプロセスのコマンドラインを取得する方法


8

Mac OS Xでプロセスを呼び出すために使用されたコマンドラインを取得することは可能ですか?


1
ps --pid $PID -o args=それは...とにかく、私が使うものだ
yardena

2
そのコマンドのマックと同等である:ps -p <pid> -o args=
ネイト

1
"-o args ="が出力を切り捨てる場合は、次のことを試してくださいps -p <pid> -o command=
Jose Alban '18

回答:


11

ps ax実行中のすべてのプロセスのコマンドラインを表示します。あなたが望むpidをgrepできます。


@ mark4oまたは単にps awux | cat-ps -wは、出力がstdoutではない場合(別のコマンドにパイプされた場合など)に表示される列の数を制限しません。
jtimberman 2009

1
なぜこれが毎週起こるのですか?「警告:不正なps構文、おそらく偽の '-'ですか?procps.sf.net/faq.htmlを参照してください」および「「ps -aux」は「ps aux」とは異なることに注意してください。POSIXおよびUNIX標準では、 ps -aux "は、" x "という名前のユーザーが所有するすべてのプロセス、および-aオプションで選択されるすべてのプロセスを印刷します。" x "という名前のユーザーが存在しない場合、このpsはコマンドを次のように解釈します。代わりに「ps aux」と警告を出力します。この動作は、古いスクリプトと習慣の移行を支援することを目的としています。脆弱であり、変更される可能性があるため、これに依存しないでください。」
Hello71、2007

わかりません、Hello71。2歳のときの答えを訂正しました。
Bkkbrad 2011

4

します:

~$ ps ax | grep "ntp"
   57   ??  Ss     0:04.66 /usr/sbin/ntpd -c /private/etc/ntp.conf -n
 3104 s000  S+     0:00.00 grep ntp

あなたはそれを必要としていますか(ntpをあなたが興味があるプログラムに変更してください)?これは通常、実行中のプロセスのコマンドライン引数を提供します(たとえば、システムデーモンの実行時にLaunchdが何を使用したかを確認するために使用します)。


2

cat /proc/$PROCESSNUMBER/cmdline | tr '\0' '\n'

それはLinux固有ですが、$PROCESSNUMBERカーネル(/proc/$PROCESSNUMBER/cmdlineパート)から直接番号が付けられたプロセスのコマンドラインを取得しtr -token、\ 0を改行(\ n)に変換(置換)して各引数を別々の行に置くことで、それを読みやすくします。

この行ps -efは、$ PROCESSNUMBERの部分に実行中のプロセスの実際のプロセス番号(コマンドを実行して見つけることができます)を配置した場合にのみ機能します。


3
オリジナルのポスターはMac OS Xを要求しました(そのままではありませんprocfs
Andre Holzner、2012

2
またはxargs -0 < /proc/PID/cmdline
Bash
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.