psは、プロセスのコマンドラインの最大4096文字のみを出力します


19

Javaプロセスのgrepを実行すると、出力は以下になりますが、grep出力に表示されない実際のプロセス名(kafka.Kafka)につながる4096文字に制限されています。

これはgrepの制限ですか?4096の制限を超える文字を印刷する方法はありますか?

ps -ef | grep java

java -Xmx6G -Xms6G -server -XX:+ UseG1GC -XX:MaxGCPauseMillis = 20 -XX:InitiatingHeapOccupancyPercent = 35 -XX:+ DisableExplicitGC -Djava.awt.headless = true -Xloggc:/ x / kafka / data01 / kafka-app -logs / kafkaServer-gc.log -verbose:gc -XX:+ PrintGCDetails -XX:+ PrintGCDateStamps -XX:+ PrintGCTimeStamps -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate = false -Dcom。 sun.management.jmxremote.ssl = false -Dkafka.logs.dir = / x / kafka / data01 / kafka-app-logs -Dlog4j.configuration = file:./../ config / log4j.properties -cp:/ x /home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin/../libs/aopalliance-repackaged-2.4.0-b34.jar:/x/home/bmcuser/kafka-paypal/kafka_2.10 -0.10.1.1 / bin /../ libs / argparse4j-0.5.0.jar:/x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin /../ libs / connect-api- 0.10.1.1.jar:/x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin/ ../libs/connect-file-0.10.1.1.jar:/x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin/../libs/connect-json-0.10.1.1.jar:/ x / home / bmcuser / kafka-paypal / kafka_2.10-0.10.1.1 / bin /../ libs / connect-runtime-0.10.1.1.jar:/x/home/bmcuser/kafka-paypal/kafka_2.10- 0.10.1.1/bin/../libs/guava-18.0.jar:/x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin/../libs/hk2-api-2.4.0 -b34.jar:/x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin /../ libs / hk2-locator-2.4.0-b34.jar:/ x / home / bmcuser / kafka-paypal / kafka_2.10-0.10.1.1 / bin /../ libs / hk2-utils-2.4.0-b34.jar:/x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/ bin /../ libs / jackson-annotations-2.6.0.jar:/x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin /../ libs / jackson-core-2.6.3 .jar:/x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin /../ libs / jackson-databind-2.6.3.jar:/ x / home / bmcuser / kafka-paypal / kafka_2.10-0.10.1.1 / bin / ../libs/jackson-jaxrs-base-2.6.3.jar:/x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin/../libs/jackson-jaxrs-json-provider-2.6 .3.jar:/x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin /../ libs / jackson-module-jaxb-annotations-2.6.3.jar:/ x / home / bmcuser / kafka-paypal / kafka_2.10-0.10.1.1 / bin /../ libs / javassist-3.18.2-GA.jar:/x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/ bin /../ libs / javax.annotation-api-1.2.jar:/x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin /../ libs / javax.inject-1.jar :/x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin /../ libs / javax.inject-2.4.0-b34.jar:/ x / home / bmcuser / kafka-paypal / kafka_2.10-0.10.1.1 / bin /../ libs / javax.servlet-api-3.1.0.jar:/x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin/ .. /libs/javax.ws.rs-api-2.0.1.jar:/x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin/../libs/jersey-client-2.22.2 .jar:/x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin/../libs/jersey-common-2.22.2.jar:/x/home/bmcuser/kafka-paypal/kafka_2.10 -0.10.1.1 / bin /../ libs / jersey-container-servlet-2.22.2.jar:/x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin /../ libs / jersey-container-servlet-core-2.22.2.jar:/x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin /../ libs / jersey-guava-2.22.2.jar: /x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin/../libs/jersey-media-jaxb-2.22.2.jar:/x/home/bmcuser/kafka-paypal/kafka_2 .10-0.10.1.1 / bin /../ libs / jersey-server-2.22.2.jar:/x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin /../ libs / jetty-continuation-9.2.15.v20160210.jar:/x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin /../ libs / jetty-http-9.2.15.v20160210.jar: /x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin/../libs/jetty-io-9.2.15.v20160210.jar:/x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin/../libs/jetty-security-9.2.15.v20160210.jar:/x/home/bmcuser/kafka-paypal/kafka_2 .10-0.10.1.1 / bin /../ libs / jetty-server-9.2.15.v20160210.jar:/x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin /../ libs / jetty-servlet-9.2.15.v20160210.jar:/x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin /../ libs / jetty-servlets-9.2.15.v20160210。 jar:/x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin /../ libs / jetty-util-9.2.15.v20160210.jar:/ x / home / bmcuser / kafka-paypal /kafka_2.10-0.10.1.1/bin/../libs/jopt-simple-4.9.jar:/x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin/../libs/ kafka_2.10-0.10.1.1.jar:/x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin /../ libs / kafka_2.10-0.10.1.1-so/libs/jetty-server-9.2.15.v20160210.jar:/x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin/../libs/jetty-servlet-9.2.15.v20160210 .jar:/x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin /../ libs / jetty-servlets-9.2.15.v20160210.jar:/ x / home / bmcuser / kafka- paypal / kafka_2.10-0.10.1.1 / bin /../ libs / jetty-util-9.2.15.v20160210.jar:/x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin/ ../libs/jopt-simple-4.9.jar:/x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin/../libs/kafka_2.10-0.10.1.1.jar:/ x / home / bmcuser / kafka-paypal / kafka_2.10-0.10.1.1 / bin /../ libs / kafka_2.10-0.10.1.1-so/libs/jetty-server-9.2.15.v20160210.jar:/x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin/../libs/jetty-servlet-9.2.15.v20160210 .jar:/x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin /../ libs / jetty-servlets-9.2.15.v20160210.jar:/ x / home / bmcuser / kafka- paypal / kafka_2.10-0.10.1.1 / bin /../ libs / jetty-util-9.2.15.v20160210.jar:/x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin/ ../libs/jopt-simple-4.9.jar:/x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin/../libs/kafka_2.10-0.10.1.1.jar:/ x / home / bmcuser / kafka-paypal / kafka_2.10-0.10.1.1 / bin /../ libs / kafka_2.10-0.10.1.1-so/libs/jetty-util-9.2.15.v20160210.jar:/x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin/../libs/jopt-simple-4.9.jar:/ x / home / bmcuser / kafka-paypal / kafka_2.10-0.10.1.1 / bin /../ libs / kafka_2.10-0.10.1.1.jar:/x/home/bmcuser/kafka-paypal/kafka_2.10- 0.10.1.1/bin/../libs/kafka_2.10-0.10.1.1-so/libs/jetty-util-9.2.15.v20160210.jar:/x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin/../libs/jopt-simple-4.9.jar:/ x / home / bmcuser / kafka-paypal / kafka_2.10-0.10.1.1 / bin /../ libs / kafka_2.10-0.10.1.1.jar:/x/home/bmcuser/kafka-paypal/kafka_2.10- 0.10.1.1/bin/../libs/kafka_2.10-0.10.1.1-so


この投稿を参照してください。 unix.stackexchange.com/questions/101681/...
Kamaraj

それは問題を解決しませんでした。ここでの制限は4096バイトだと思います。
zer0Id0l

3
おそらく、ワイルドカード構文を使用してクラスパスを大幅に短くできるように見えます。stackoverflow.com/ questions / 219585 /…を参照してください。または、env var CLASSPATHを使用してコマンドラインから完全に移動できます。どちらの場合も、コマンドラインを短くしてクラス名を表示できる可能性が高くなります。または、Javaプロセスの場合のみ、UIDにアクセス権があり、JDKを所有または取得している場合jps、コマンドラインの切り捨てに関係なくクラス名が表示されます(少なくともLinuxの場合)。
dave_thompson_085

1
私はOPが認識しているが、おそらくこれが生成されたスクリプトではないと確信して@slebetman

1
タイトルはps -efより多くの印刷を意味しますが、grepがそれを変えています。それは...根拠のないようです。
チャールズダフィー

回答:


35

これはの制限でgrepはなく、/proc/PID/cmdline(技術的には設計上の決定であり、制限ではありません)の制限です。/proc/PID/cmdlineメインのコマンドと引数がASCII NULで区切られたプロセスの完全なコマンドラインが含まれ、ファイルもNULで終わります。したがって、grep一致する場合はファイルの内容全体を印刷します。(ps -efこのファイルのコンテンツをとして取得しますCMD)。

(Linux)カーネルでは、最大長は次のようにハードコードされていますPAGE_SIZE

static int proc_pid_cmdline(struct task_struct *task, char * buffer)
{
        int res = 0;
        unsigned int len;
        struct mm_struct *mm = get_task_mm(task);
        if (!mm)
                goto out;
        if (!mm->arg_end)
                goto out_mm;    /* Shh! No looking before we're done */

        len = mm->arg_end - mm->arg_start;

        if (len > PAGE_SIZE)
                len = PAGE_SIZE;

したがって、このようなシステムでは4096バイトです。

% getconf PAGE_SIZE
4096

また、マルチバイト文字がある場合、想像できるように、文字数は4096未満になります。


7
@ zer0Id0l変更することはできませんPAGE_SIZE。これはハードウェアのプロパティです。ページサイズを大きくした新しいハードウェアを設計するか、(非常に簡単に...)cmdline適切なメモリマッピングまたはコピーを実装して、コンテンツが1ページに切り捨てられるという制限を削除する必要があります。
ジル 'SO-悪であるのをやめる'

4
FWIW、Gilesがハードウェアのプロパティであると言うとき、それはあなたのCPUのMMUのプロパティであることを意味します。そのため、ページサイズが4kを超えるMMUのCPUを使用するか、ページサイズが4kを超える外部MMUを使用するアーキテクチャを設計する(およびマザーボードとBIOSを構築する)必要があります(以前のMMUは外部チップ)または独自のCPU(およびコンパイラなど)を設計します。他のオプションは、そのようLinuxカーネルを変更することですproc_pid_cmdlinePAGE_SIZE使用していません
slebetman

この設計上の制限は存在する必要はありません。それを持たない別のproc_pid_cmdlineを自由に記述してください。
ジョシュア
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.