ps केवल किसी भी प्रक्रिया के कमांड लाइन के 4096 अक्षरों तक प्रिंट करता है


19

जब मैं एक जावा प्रक्रिया के लिए 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: / xaf -af-afafea.php -logs / kafkaServer-gc.log -verbose: gc -XX: + PrintGCDetails -XX: + PrintGCDateStamps -XX: + PrintGCTimeStamps -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.amxremote.authent मिथ्या sun.management.jmxremote.ssl = false -Dkafka.logs.dir = / x / kafka / data01 / kafka-app-log -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 / कनेक्ट-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:/ एक्स / घर / bmcuser / काफ्का-paypal / kafka_2.10-0.10.1.1 / bin /../ libs / कनेक्ट-क्रम-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-लोकेटर-2.4.0-b34.jar: / एक्स / घर / bmcuser / काफ्का-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/ बिन /../ libs / जैक्सन-एनोटेशन-2.6.0.jar: /x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin /../ libs / जैक्सन कोर-2.6.3 .jar: /x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin /../ libs / जैक्सन-DataBind-2.6.3.jar: / एक्स / घर / bmcuser / काफ्का-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 / जैक्सन मॉड्यूल-JAXB-एनोटेशन-2.6.3.jar: / एक्स / घर / bmcuser / काफ्का-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/ बिन /../ 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: / एक्स / घर / bmcuser / काफ्का-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 / जर्सी-कंटेनर-सर्वलेट-2.22.2.jar: /x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin /../ libs / जर्सी-कंटेनर-सर्वलेट कोर-2.22.2.jar: /x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin /../ libs / जर्सी-अमरूद-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 / जर्सी-server-2.22.2.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 / घाट-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 / घाट-server-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 / घाट-सर्वलेट्स-9.2.15.v20160210। जार: /x/home/bmcuser/kafka-paypal/kafka_2.10-0.10.1.1/bin /../ libs / घाट-util-9.2.15.v20160210.jar: / एक्स / घर / bmcuser / काफ्का-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-तो/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 / घाट-सर्वलेट्स-9.2.15.v20160210.jar: / एक्स / घर / bmcuser / kafka- paypal / kafka_2.10-0.10.1.1 / bin /../ libs / घाट-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:/ एक्स / घर / bmcuser / काफ्का-paypal / kafka_2.10-0.10.1.1 / bin /../ libs / kafka_2.10-0.10.1.1-तो/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 / घाट-सर्वलेट्स-9.2.15.v20160210.jar: / एक्स / घर / bmcuser / kafka- paypal / kafka_2.10-0.10.1.1 / bin /../ libs / घाट-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:/ एक्स / घर / bmcuser / काफ्का-paypal / kafka_2.10-0.10.1.1 / bin /../ libs / kafka_2.10-0.10.1.1-तो/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:/ एक्स / घर / bmcuser / काफ्का-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:/ एक्स / घर / bmcuser / काफ्का-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/…
कामराज

यह समस्या हल नहीं हुई। मुझे लगता है कि यहाँ सीमा 4096 बाइट्स है।
zer0Id0l

3
ऐसा लगता है कि शायद आप वाइल्डकार्ड सिंटैक्स का उपयोग करके अपने वर्गपथ को बहुत छोटा बना सकते हैं, stackoverflow.com/questions/219585/… देखें , या आप निश्चित रूप से env var CLASSICH का उपयोग करके कमांडलाइन को बंद (पूरी तरह से) स्थानांतरित कर सकते हैं; उन दोनों में से किसी को भी कमांडलाइन बनाने का अच्छा मौका है कि वह आपके क्लासनाम को देख सके। या केवल जावा प्रक्रियाओं के लिए , यदि आपके यूआईडी तक पहुंच है और आपके पास जेडीके है या नहीं, तो jpsकमांडलाइन ट्रंकेशन (कम से कम लिनक्स पर) की परवाह किए बिना क्लासनाम दिखाता है।
dave_thompson_085

1
@slebetman मुझे यकीन है कि ओपी जागरूक है, लेकिन स्क्रिप्ट जो शायद यह उत्पन्न करती है
बिल्ली

1
शीर्षक का तात्पर्य है कि ps -efअधिक प्रिंट, लेकिन grep है जो इसे बदल रहा है। ऐसा लगता है ... निराधार।
चार्ल्स डफी

जवाबों:


35

यह एक सीमा नहीं है grep, लेकिन /proc/PID/cmdline(तकनीकी रूप से, एक डिजाइन निर्णय, एक सीमा नहीं है)। /proc/PID/cmdlineमुख्य कमांड और तर्कों के साथ ASCII NUL द्वारा अलग की गई प्रक्रिया की पूरी कमांड लाइन है, और फाइल NUL में भी समाप्त होती है। तो, grepअगर वहाँ एक मैच है पूरी फ़ाइल सामग्री मुद्रित करेगा। (के ps -efरूप में इस फ़ाइल की सामग्री हो जाता है CMD)।

(लिनक्स) कर्नेल में अधिकतम लंबाई हार्डकोड है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जिसे उचित स्मृति मैपिंग या कॉपी करके एक पृष्ठ पर छोटा किया गया है।
गिलेस एसओ- बुराई को रोकना '

4
FWIW, जब जाइल्स का कहना है कि यह हार्डवेयर की संपत्ति है, तो इसका मतलब है कि यह आपके CPU के MMU की संपत्ति है। इसलिए आपको 4k से बड़े आकार के MMU वाले CPU का उपयोग करना होगा या किसी आर्किटेक्चर को डिज़ाइन करना होगा (और इसके लिए मदरबोर्ड + BIOS का निर्माण करें) जो बाहरी MMU का उपयोग पृष्ठ के आकार से 4k से बड़ा हो (याद रखें, अतीत में MMU का उपयोग किया जाता था a) बाहरी चिप) या अपना स्वयं का सीपीयू (प्लस कंपाइलर आदि) डिज़ाइन करें। अन्य विकल्प लिनक्स कर्नेल को संशोधित करना है ताकि proc_pid_cmdlinePAGE_SIZE
slebetman का

यह डिज़ाइन सीमा मौजूद नहीं है। एक और proc_pid_cmdline लिखने के लिए स्वतंत्र महसूस करें, जो इसके पास नहीं है।
जोशुआ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.