ps печатает до 4096 символов командной строки любого процесса

Когда я grep для java-процесса, я получаю ниже результата, но он ограничен 4096 символами, что приводит к фактическому имени процесса (которое является kafka.Kafka), не показанному в выводе grep .

Это ограничение grep? Есть ли способ печатать символы, превышающие лимит 4096?

 ps -ef | grep java 

java -Xmx6G -Xms6G -server -XX: + UseG1GC -XX: MaxGCPauseMillis = 20 -XX: InitatingHeapOccupancyPercent = 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 = файл: ./../ 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 / бен /../ ЛИЭС / argparse4j-0.5.0.jar: /x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin /../ ЛИЭС / подключения-API- 0.10.1.1.jar: /x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin /../ ЛИЭС / Connect-файл-0.10.1.1.jar: / х / дома / bmcuser / Кафка -paypal / kafka_2.10-0.10.1.1 / бен /../ ЛИЭС / подключения-JSON-0.10.1.1.jar: /x/home/bmcuser/kafka-paypal/kafka_2.10-0.1 0.1.1 / бен /../ ЛИЭС / подключения-среда-0.10.1.1.jar: /x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin /../ ЛИЭС / гуава-18,0 .jar: /x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin /../ ЛИЭС / hk2-апи-2.4.0-b34.jar: / х / дома / bmcuser / kafka- PayPal / kafka_2.10-0.10.1.1 / бен /../ ЛИЭС / hk2-локатор-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 /../ ЛИЭС / ДЖЕКСОНА-ядро-2.6.3.jar: / х / дома / bmcuser / Кафка-PayPal / kafka_2.10-0.10.1.1 / бен /../ ЛИЭС / ДЖЕКСОНА-DataBind-2.6.3.jar: /x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin /../ ЛИЭС /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 /../ ЛИЭС / ДЖЕКСОНА-модуль-JAXB-аннотаций-2.6.3.jar: / х / дома / bmcuser / Кафка-PayPal / kafka_2.10-0.10.1.1 / бен /../ ЛИЭС / javass IST-3.18.2-GA.jar: /x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin /../ ЛИЭС / javax.annotation-апи-1.2.jar: / х / дома /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 /../ ЛИЭС / javax.ws.rs-апи-2.0.1.jar: / х / дома /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 / Джерси-контейнер-сервлет-ядро-2.22.2.jar: / х / дома /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 / бен /../ ЛИЭС / причал-продолжающей 9.2.15.v20160210.jar: /x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin /../ ЛИЭС / jetty- HTTP-9.2.15.v20160210.jar: /x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin /../ ЛИЭС / причал-ю-9.2.15.v20160210.jar: / х /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 / бен /../ ЛИЭС / причал-сервера 9.2.15.v20160210.jar: /x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin /../ ЛИЭС / причал-сервлет-9.2.15.v20160210.jar: /x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin /../ LIBS / причал-сервлеты-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 / бен /../ ЛИЭС / jopt-простой 4.9.jar: /x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin /../ ЛИЭС / kafka_2. 10- 0.10.1.1.jar: /x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin /../ ЛИЭС / kafka_2.10-0.10.1.1-так

One Solution collect form web for “ps печатает до 4096 символов командной строки любого процесса”

Это не ограничение 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, как вы можете себе представить.

Linux и Unix - лучшая ОС в мире.