ps, herhangi bir işlemin komut satırının en fazla 4096 karakterini yazdırır


19

Bir java işlemi için grep zaman çıktı altına almak ama 4096 karakter ile sınırlı olan gerçek işlem adı (yani kafka.Kafka) grepçıktıda gösterilmez .

Bu bir grep sınırlaması mıdır? 4096 sınırını aşan karakterler yazdırmanın bir yolu var mı?

ps -ef | grep java

java -Xmx6G -Xms6G -server -XX: + KullanımG1GC -XX: MaxGCPauseMillis = 20 -XX: InitiatingHeapOccupancyPercent = 35 -XX: + DisableExplicitGC -Djava.awt.headless = true -Xloggc: / x / kafka / data01 / kafka-app-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 = yanlış -Dkafka.logs.dir = / x / kafka / data01 / kafka-app-logs -Dlog4j.configuration = dosya: ./../ 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 /../ kütüphaneleri / argparse4j-0.5.0.jar: /x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin /../ kütüphaneleri / bağlantı-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 /../ kütüphaneleri / bağlantı-çalışma zamanı-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 /../ kütüphaneleri / hK2-bulucu-2.4.0-b34.jar: / x / home / bmcuser / kafka-paypal / kafka_2.10-0.10.1.1 / bin /../ kütüphaneleri / hK2-utils-2.4.0-b34.jar: /x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/ bin /../ kütüphaneleri / jackson-açıklamalar-2.6.0.jar: /x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin /../ kütüphaneleri / jackson-çekirdek-2.6.3 .jar: /x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin /../ kütüphaneleri / 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 /../ kütüphaneleri / jackson-modül-JAXB-ek açıklamalar-2.6.3.jar: / x / home / bmcuser / kafka-paypal / kafka_2.10-0.10.1.1 / bin /../ kütüphaneleri / javassist-3.18.2-GA.jar: /x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/ bin /../ kütüphaneleri / javax.annotation-api-1.2.jar: /x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin /../ kütüphaneleri / javax.inject-1.jar : /x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin /../ kütüphaneleri / javax.inject-2.4.0-b34.jar: / x / home / bmcuser / kafka-paypal / kafka_2.10-0.10.1.1 / bin /../ kütüphaneleri / 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 /../ kütüphaneleri / forması-konteyner-servlet-2.22.2.jar: /x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin /../ kütüphaneleri / mayo-kap sunucu uygulaması çekirdekli 2.22.2.jar: /x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin /../ kütüphaneleri / mayo-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 /../ kütüphaneleri / forması-sunucu-2.22.2.jar: /x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin /../ kütüphaneleri / dalgakıran-devamı 9.2.15.v20160210.jar: /x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin /../ kütüphaneleri / dalgakıran 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 /../ kütüphaneleri / dalgakıran-sunucu-9.2.15.v20160210.jar: /../ /x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin kütüphaneleri / dalgakıran-sunucu uygulaması-9.2.15.v20160210.jar: /x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin /../ kütüphaneleri / dalgakıran-servlet'ler-9.2.15.v20160210. kavanoz: /x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin /../ kütüphaneleri / dalgakıran-util-9.2.15.v20160210.jar: / bmcuser / kafka-paypal / x / ev /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 /../ kütüphaneleri / 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 /../ kütüphaneleri / dalgakıran-servlet'ler-9.2.15.v20160210.jar: / x / home / bmcuser / kafka- payPal / kafka_2.10-0.10.1.1 / bin /../ kütüphaneleri / dalgakıran-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 /../ kütüphaneleri / 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 /../ kütüphaneleri / dalgakıran-servlet'ler-9.2.15.v20160210.jar: / x / home / bmcuser / kafka- payPal / kafka_2.10-0.10.1.1 / bin /../ kütüphaneleri / dalgakıran-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 /../ kütüphaneleri / 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 /../ kütüphaneleri / 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 /../ kütüphaneleri / 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


bu gönderiye başvurabilir misin? unix.stackexchange.com/questions/101681/...
Kamaraj

Bu sorunu çözmedi. Sanırım buradaki sınırlama 4096 bayt.
zer0Id0l

3
Muhtemelen, joker karakter sözdizimini kullanarak sınıf yolunuzu çok daha kısa hale getirebilirsiniz, bkz. Stackoverflow.com/questions/219585/… ya da env var CLASSPATH kullanarak komut satırından kesinlikle (tamamen) taşıyabilirsiniz; bunlardan birinin komut satırını sınıf adınızı görecek kadar kısa yapma şansı vardır. Veya yalnızca Java işlemleri için , UID'niz erişebiliyorsa ve jpsJDK'nız varsa veya alıyorsanız , komut satırı kesilmesinden bağımsız olarak sınıf adını gösterir (en azından Linux'ta).
dave_thompson_085

1
@slebetman OP'nin farkında olduğundan eminim ama muhtemelen bunu yapan komut dosyası değil
cat

1
Başlık, ps -efdaha fazla baskı olduğunu ima ediyor , ancak grep onu değiştiriyor. Görünüşe göre ... asılsız.
Charles Duffy

Yanıtlar:


35

Bu bir sınırlama değildir grep, /proc/PID/cmdline(teknik olarak bir tasarım kararıdır, bir sınırlama değildir). /proc/PID/cmdlineASCII NUL ile ayrılmış ana komut ve bağımsız değişkenler ile işlemin tüm komut satırını içerir ve dosya da NUL ile biter. Yani, grepbir eşleşme varsa tüm dosya içeriğini yazdırır. ( ps -efbu dosyanın içeriğini alır CMD).

Maksimum uzunluk (Linux) çekirdeğinde sabit olarak kodlanmıştırPAGE_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;

dolayısıyla böyle bir sistem için 4096 bayt:

% getconf PAGE_SIZE
4096

Ayrıca, çok baytlı karakterleriniz varsa, tahmin edebileceğiniz gibi karakter sayısı 4096'dan az olacaktır.


7
@ zer0Id0l Değiştiremezsiniz PAGE_SIZE: bu donanımın bir özelliğidir. Daha büyük bir sayfa boyutuna sahip yeni bir donanım tasarlamanız veya cmdlineuygun bellek eşlemesini veya kopyalamasını uygulayarak içeriğinin bir sayfaya kesilme sınırını kaldırmanız gerekir .
Gilles 'SO- kötü olmayı bırak'

4
FWIW, Giles bir donanım özelliği olduğunu söylediğinde, CPU'nuzun MMU'sunun özelliği olduğu anlamına gelir. Bu nedenle, sayfa boyutu 4k'den büyük MMU'lu bir CPU kullanmanız veya 4k'den büyük sayfa boyutu olan harici MMU kullanan bir mimari tasarlamanız (ve bunun için bir anakart + BIOS oluşturmanız) gerekir (unutmayın, geçmiş MMU eskiden harici çip) veya kendi CPU'nuzu tasarlayın (artı derleyici vb.). Diğer seçenek, linux çekirdeğini proc_pid_cmdlinePAGE_SIZE kullanmamak için değiştirmek
slebetman

Bu tasarım sınırlamasının mevcut olması gerekmez. Sahip olmayan başka bir proc_pid_cmdline yazmaktan çekinmeyin.
Joshua
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.