मैं लिनक्स में उपयोगकर्ताओं की संख्या ऑनलाइन कैसे पा सकता हूँ?


10

मैं कैसे देख सकता हूं कि कितने लोग लिनक्स मशीन पर लॉग इन हैं? मुझे पता है कि 'उपयोगकर्ता' कमांड सभी लोगों को लॉग इन दिखाती है, लेकिन मुझे एक नंबर की आवश्यकता है। क्या उपयोगकर्ताओं के लिए एक स्विच है जो मुझे मैन पेज में याद आ रहा है? मैंने grep -cकमांड का उपयोग करने के बारे में सोचा , लेकिन ऐसा कुछ होना चाहिए जो काम करने के लिए प्रत्येक उपयोगकर्ता नाम में समान हो। क्या कोई आसान तरीका है?

जवाबों:


15

आप wc(शब्द गणना) कमांड के लिए देख रहे हैं ।

इसे इस्तेमाल करे:

users | wc -w

ध्यान दें कि यह दृष्टिकोण (जो / डब्ल्यू समाधान) केवल लॉग इन किए गए उपयोगकर्ताओं को दिखाते हैं, जरूरी नहीं कि सक्रिय उपयोगकर्ता (यानी उपयोगकर्ता जो एक प्रक्रिया शुरू करते हैं और फिर लॉगआउट को पीछे की प्रक्रिया को छोड़ देते हैं)। बस अंतर के बारे में सिर देने के लिए।
एस्टानी

18

शास्त्रीय रूप से, कमांड 'उपयोगकर्ता' के बजाय 'कौन' है, लेकिन 'कौन' आपको अधिक जानकारी देता है। मूल यूनिक्स लेख (70 के दशक के मध्य) को देखते हुए, उदाहरण होगा:

who | wc -l

'Wc -l' आउटपुट की रेखाओं का उपयोग करता है - यह 'उपयोगकर्ताओं' और 'कौन' दोनों के साथ काम करता है । '-W' का उपयोग केवल विश्वसनीय तरीके से करता है जब प्रति उपयोगकर्ता एक शब्द होता है (जैसा कि 'उपयोगकर्ताओं' के साथ होता है लेकिन 'कौन' के साथ नहीं)।

आप लाइनों को गिनने के लिए 'grep -c' का उपयोग कर सकते हैं। चूंकि आप केवल गैर-रिक्त उपयोगकर्ता नामों में रुचि रखते हैं, आप ऐसा कर सकते हैं:

who | grep -c .

प्रत्येक पंक्ति में हमेशा कम से कम एक वर्ण होता है।


के रूप में में नोट टिप्पणियों द्वारा जॉन टी , usersआदेश से अलग whoमामलों की संख्या में। सबसे महत्वपूर्ण यह है कि प्रति पंक्ति एक नाम देने के बजाय, यह प्रति पंक्ति कई नामों को फैलाता है - मेरे पास पर्याप्त विभिन्न उपयोगकर्ताओं के साथ एक मशीन नहीं है जो यह जांचने के लिए लॉग इन करता है कि उपयोगकर्ताओं की संख्या बड़ी होने पर क्या होता है। दूसरा अंतर यह है कि 'कौन' उपयोग में टर्मिनल कनेक्शन पर रिपोर्ट करता है। कई टर्मिनल विंडो खुलने के साथ, यह एक उपयोगकर्ता के लिए कई लाइनें दिखाएगा, जबकि 'उपयोगकर्ता' उपयोगकर्ता को केवल एक बार लॉग इन करने की सूची देता है।

इस अंतर के परिणामस्वरूप, ' grep -c .' सूत्रीकरण 'उपयोगकर्ता' कमांड के साथ काम नहीं करेगा; ' wc -w' आवश्यक है।


छोटे नाइटपिक - उपयोगकर्ता कमांड प्रति उपयोगकर्ता 1 लाइन प्रिंट नहीं करता है, यह सिर्फ आईडी के क्रमिक रूप से प्रिंट करता है, इसलिए grep -c। इस मामले में काम नहीं करेगा। हालांकि स्मार्ट सोच।
जॉन टी

इसका अर्थ यह भी है कि wc -l उपयोगकर्ताओं के कमांड के साथ काम नहीं करेगा, जैसा कि यहाँ दिखाया गया है: i26.tinypic.com/4pw0vd.png
जॉन टी

@ जॉन टी: ओह - ठीक है, स्क्रीन शॉट दिया, तुम सही हो। मैंने MacOS X पर 'उपयोगकर्ताओं' का परीक्षण किया - लेकिन केवल एक उपयोगकर्ता ने लॉग इन किया। जब मैंने एक दूसरे उपयोगकर्ता के साथ लॉग इन किया, तो मैंने 'ऑल ऑन वन लाइन' व्यवहार देखा।
जोनाथन लेफलर

1
अधिक उपयोगकर्ताओं का अनुकरण करने के लिए आप अपने खुद के बॉक्स में SSH कर सकते हैं :)
जॉन टी

इस बहुमूल्य जानकारी के लिए धन्यवाद, हालांकि मैं "उपयोगकर्ता" कमांड के साथ रहना चाहता था। इसके अलावा, आप को धन्यवाद दिया।

7

एक खोल खोलें और टाइप करें:

who -q

अंतिम पंक्ति आपको एक गिनती देगी।

संपादित करें:

(आह) मैं सवाल गलत समझा। यहाँ कुछ हद तक जानवर बल है:

अद्वितीय उपयोगकर्ता नाम देखने के लिए:

who | awk '{ print $1 }' | sort | uniq

अद्वितीय उपयोगकर्ताओं की संख्या देखने के लिए:

who | awk '{ print $1 }' | sort | uniq | wc -l 

कि कुल में एक ही उपयोगकर्ता के सभी लॉगिन गिना जाता है।
हयालसी जूल

पुनः संपादित करें की जांच करें, मुझे लगता है कि आप पाएंगे कि नए उत्तर पता है कि।
एवे पायन

यह अभी भी काम नहीं करता है, uniq केवल डुप्लिकेट क्रमिक लाइनों को हटाता है, आपको पहले कौन का आउटपुट सॉर्ट करना होगा।
अभिषेकशील जूल 27'09

यह वही है जो मुझे 1 बजे जवाब पोस्ट करने के लिए मिलता है। (आह) तय।
एवेनी पायने

3

क्या आप सत्रों की संख्या, या वास्तविक उपयोगकर्ताओं की संख्या देखना चाहते हैं ?

$ who
andrew   tty1         2009-07-26 15:31 (:0)
andrew   pts/0        2009-07-27 00:11 (:0.0)
andrew   pts/1        2009-07-27 01:58 (:0.0)

यह मेरे लैपटॉप पर है, इसलिए मैं अकेला उपयोगकर्ता हूं, लेकिन मैंने तीन बार लॉग इन किया।

$ who | wc -l
3
$ users | wc -w
3

वास्तविक उपयोगकर्ताओं की संख्या प्राप्त करने के लिए इन डुप्लिकेट को फ़िल्टर करना काफी आसान है।

$ users | tr ' ' '\n' | sort -u 
andrew
$ users | tr ' ' '\n' | sort -u | wc -l
1

3

यहाँ tink के महान awk पोस्ट का एक bash संस्करण है :

set $(users)
declare -A user
for u ; do ((user[$u]++)) ; done
for key in "${!user[@]}" ; do echo "$key: ${user[$key]}" ; done | column -t | sort -nk 2

ठीक है, यह थोड़ा लंबा है, लेकिन यह एक खोजने लायक था ... :)।

परीक्षण करते समय, अगले प्रयास से पहले करें:

shift $#                # clear positional parameters
unset user              # remove associative array variable

2

वर्तमान में लॉग इन किए गए उपयोगकर्ताओं की संख्या:

who |cut -c 1-9 |sort -u |wc -l

उपरोक्त बूटा उनके खाते के नाम के साथ:

who |cut -c 1-9 |sort -u |tee /dev/tty |wc -l

1
who | cut --delimiter=' ' -f 1 | sort -u | wc -l

जो सूची को प्रिंट करता है, कट सब कुछ हटा देता है लेकिन पहली पंक्ति, सॉर्ट-यू इसे सॉर्ट करता है और डुप्लिकेट को हटा देता है और डब्ल्यूसी-एल लाइनों को गिनता है। Ubuntu / bash पर मेरे लिए ठीक काम करता है :)


1

आप बस w( /usr/bin/wमेरे Red Hat आधारित सिस्टम पर) का उपयोग कर सकते हैं या uptime, वे उपयोगकर्ताओं की लॉग इन की वास्तविक संख्या दिखाते हैं।

w:

                              v
 22:40:38 up 3 days, 22 min,  1 user,  load average: 0.02, 0.01, 0.00
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
manuel   pts/0    pc-manuel        09:35    0.00s  0.07s  0.00s /usr/bin/screen -xRR

सक्रिय रहने की अवधि:

                              v
 22:39:18 up 3 days, 21 min,  1 user,  load average: 0.08, 0.02, 0.01

1

और एक विधि जो केवल एक पाइप का उपयोग करती है ...

users | awk '{for(i=1;i<=NF;i++){a[$i]++}}END{for(i in a){print i"\t"a[i]}}'

:}



0

आप हमेशा यूनिक्स के लिए निशुल्क टूल डाउनलोड कर सकते हैं जिसे TOP कहा जाता है। यह उपयोगकर्ताओं की एक सूची तैयार करता है और यह भी कि वे उस समय सिस्टम पर क्या कर रहे हैं और जब तक यह चल रहा है तब तक अपडेट होता रहेगा।

यह http://www.unixtop.org/ पर स्थित है

इसमें कई कमांड लाइन स्विच हैं जिससे आपको वह जानकारी निकालने में सक्षम होना चाहिए जिसकी आप तलाश कर रहे हैं।


मुझे अभी तक एक लिनक्स डिस्ट्रो का पता लगाना है जो डिफ़ॉल्ट रूप से शीर्ष शामिल नहीं करता है, अकेले पैकेज से इसे स्थापित करने का विकल्प नहीं है।
अभिषेकशील जूल 27'09

0
who | cut -d ' ' -f1 | uniq | wc -l

2
यह किम के उत्तर के एक छोटे बदलाव की तरह लगता है, और इसमें कोई स्पष्टीकरण नहीं है। यह उस उत्तर पर टिप्पणी के रूप में अधिक उपयुक्त हो सकता है (जिसके लिए थोड़ा और प्रतिनिधि चाहिए)। आशय यह है कि प्रत्येक उत्तर एक समाधान प्रदान करता है जो कि पहले से योगदान किए गए से अलग है।
फिक्सर 1234

-2

यदि आप एक उचित क्रम में लॉग इन और लॉग इन किए गए उपयोगकर्ताओं की कुल संख्या की तलाश कर रहे हैं, तो चलाने के लिए सबसे अच्छा कमांड है

cat -n /etc/passwd

2
नहीं, यह वह नहीं है जो कमांड करता है। cat -nफ़ाइल में सभी पंक्तियों को प्रिंट करता है, प्रत्येक को क्रमबद्ध करता है। आपको उन उपयोगकर्ताओं की एक सूची मिलेगी जो उस प्रणाली पर मौजूद हैं, लेकिन आपको बहुत लॉगिन जानकारी नहीं मिलेगी।
cpast
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.