मूसाका के उत्तर (उदाहरण के लिए, यदि आपके पास बहुत लंबे समय तक उपयोगकर्ता नाम हैं, लेकिन जो बहुत ही कम उपयोग किए जाते हैं और आप अधिकतर समय बर्बाद नहीं करना चाहते हैं) के लिए गतिशील लंबाई आउटपुट के लिए, आप इसका उपयोग कर सकते हैं:
ps -eo उपयोगकर्ता: $ (ps axho uid | तरह -u | xargs getent पासवर्ड | कटौती -f1 -d: | WC एल), पीआईडी, ppid, ग, STIME, tname, समय, cmd
यह उपयोगकर्ता नाम कॉलम की लंबाई को तब तक बनाएगा जब तक वर्तमान में चल रहे प्रक्रिया का सबसे लंबा उपयोगकर्ता नाम। (ध्यान दें कि यह बुलेटप्रूफ नहीं है, और यदि कमांडर चलने के दौरान लंबे समय तक उपयोगकर्ता नाम के साथ नई प्रक्रिया शुरू होती है, तो आपको अभी भी एक संख्या प्रदर्शित हो सकती है। लेकिन 99.99% समय के लिए यह बहुत अच्छा आउटपुट है)
स्पष्टीकरण: $(ps axho uid [...] | wc -L)
वर्तमान में चल रहे प्रक्रिया की अधिकतम उपयोगकर्ता नाम लंबाई की गणना करता है, और फिर हम उपयोगकर्ता नाम की कि लंबाई के साथ सामान्य ps निष्पादित
वैकल्पिक रूप से, अगर आप कम के उपयोगकर्ता नाम (< = 8 वर्ण) के लिए हमेशा की तरह देखने के लिए ps चाहते हैं, और नहीं है आउटपुट में कुछ लंबे उपयोगकर्ता नामों के लिए दिमाग के साथ गलत तरीके से हस्ताक्षर किए जाने के लिए दिमाग, आप कुछ ऐसा कर सकते हैं:
ps ax -o उपयोगकर्ता: 40, पिड, पीपीआईडी, सी, स्थिर, tname, समय, cmd | perl -pe 'अगर (/^(\ S +)/और लंबाई $ 1> 8) {s/^ (\ S +) \ s +/$ 1 /} अन्य {s/^ (। {9}) \ s +/$ 1 /} '
क्या करता है उत्पादन उपयोगकर्ता नाम स्तंभ बहुत लंबे बनाने (-o user:40
) है, और फिर उत्पादन इतने लंबे समय के उपयोगकर्ता नाम (length $1 > 8
) उन्हें और अगले कॉलम, और कम के उपयोगकर्ता नाम (else {
) के बीच सिर्फ एक जगह है छंटनी कर रहे हैं postprocesses डिफ़ॉल्ट पर वापस (8 वर्ण तक उपयोगकर्ता नाम, और शेष 9वीं वर्ण रिक्त स्थान हैं)
शायद क्योंकि यूआईडी संख्याओं की अनुमानित अधिकतम लंबाई है, जबकि उपयोगकर्ता नाम काफी लंबा हो सकते हैं? –
हां यह उपयोगकर्ता नाम की लंबाई है (यदि 8 वर्णों से अधिक लंबा है, तो 'ps aux' नाम के लिए यूआईडी को प्रतिस्थापित करेगा)। विवरण प्राप्त करने के लिए अब 'मैन पीएस' चल रहा है। –