ps는 모든 프로세스 명령줄에서 최대 4096자만 인쇄합니다.

ps는 모든 프로세스 명령줄에서 최대 4096자만 인쇄합니다.

Java 프로세스를 grep하면 다음과 같은 출력이 표시되지만 4096자로 제한되어 실제 프로세스 이름(예: kafka.Kafka)이 grep출력에 표시되지 않습니다.

이것이 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. 주석-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- 코어-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

답변1

이는 제한 사항이 아니지만 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개 미만이 됩니다.

관련 정보