লিনাক্সে অনলাইনে ব্যবহারকারীর সংখ্যা আমি কীভাবে খুঁজে পাব?


10

লিনাক্স মেশিনে কত লোক লগইন হয়েছে তা আমি কীভাবে দেখতে পারি? আমি জানি 'ব্যবহারকারীর' কমান্ডটি লগ ইন করা সমস্ত লোক দেখায় তবে আমার একটি সংখ্যা দরকার। ব্যবহারকারীদের জন্য এমন কোনও স্যুইচ রয়েছে যা আমি ম্যান পৃষ্ঠাতে অনুপস্থিত? আমি grep -cকমান্ডটি ব্যবহার করার কথা ভেবেছিলাম , তবে কাজ করার জন্য প্রতিটি ব্যবহারকারীর নামটিতে অবশ্যই কিছু রয়েছে। কোন সহজ উপায় আছে?

উত্তর:


16

আপনি wc(শব্দ গণনা) কমান্ড সন্ধান করছেন।

এটা চেষ্টা কর:

users | wc -w

নোট করুন যে এই পদ্ধতির (যিনি / ডাব্লু সমাধানগুলি) কেবলমাত্র সক্রিয় ব্যবহারকারীদের নয় (যেমন ব্যবহারকারীরা প্রক্রিয়া শুরু করে এবং চলমান প্রক্রিয়াটি পিছনে রেখে লগআউট করে) কেবল লগইন করা ব্যবহারকারীদের দেখায়। পার্থক্য সম্পর্কে শুধু মাথা ছেড়ে দিতে।
— এস্তানি

18

ধ্রুপদীভাবে, কমান্ডটি হ'ল 'ব্যবহারকারী' না হয়ে 'কারা', তবে 'কে' আপনাকে আরও তথ্য দেয়। মূল ইউনিক্স নিবন্ধগুলি (70-এর দশকের মাঝামাঝি) দিকে ফিরে তাকালে উদাহরণটি হ'ল:

who | wc -l

'ডাব্লুসি-এল' ব্যবহার করে আউটপুটটির লাইন গণনা করা হয় - এটি 'ব্যবহারকারী' এবং 'কে' উভয়ের সাথেই কাজ করে । '-W' ব্যবহার করা কেবল তখনই নির্ভরযোগ্যভাবে কাজ করে যখন ব্যবহারকারীর প্রতি একটি শব্দ থাকে (যেমন 'ব্যবহারকারী' তবে 'কারা' নয়)।

আপনি লাইনগুলি গণনা করতে 'গ্রেপ-সি' ব্যবহার করতে পারেন। যেহেতু আপনি কেবল খালি খালি ব্যবহারকারীর নামেই আগ্রহী তাই আপনি এটি করতে পারেন:

who | grep -c .

প্রতিটি লাইনে সর্বদা কমপক্ষে একটি চরিত্র থাকে।


হিসাবে উল্লেখ করা মন্তব্য দ্বারা জন টি , usersকমান্ড থেকে পৃথক whoশ্রদ্ধা একটি সংখ্যা। সর্বাধিক গুরুত্বপূর্ণটি হ'ল প্রতি লাইনে একটি নাম দেওয়ার পরিবর্তে, এটি প্রতি লাইনে বেশ কয়েকটি নাম ছড়িয়ে দেয় - ব্যবহারকারীর সংখ্যা বড় হওয়ার সাথে সাথে কী ঘটে তা পরীক্ষা করার জন্য আমার কাছে যথেষ্ট আলাদা ব্যবহারকারী লগইন করা মেশিন নেই। অন্য পার্থক্যটি হ'ল 'কে' ব্যবহারে টার্মিনাল সংযোগের বিষয়ে রিপোর্ট করে। একাধিক টার্মিনাল উইন্ডো খোলা থাকলে এটি একক ব্যবহারকারীর জন্য একাধিক লাইন প্রদর্শন করবে, যেখানে 'ব্যবহারকারীরা' একবারে লগ ইন করা ব্যবহারকারীকে তালিকাভুক্ত বলে মনে হচ্ছে।

এই পার্থক্যের ফলস্বরূপ, ' grep -c .' গঠন '' ব্যবহারকারীর কমান্ডের সাথে কাজ করবে না; ' wc -w' প্রয়োজনীয়।


ছোট নটপিক - ব্যবহারকারী কমান্ড ব্যবহারকারী প্রতি 1 লাইন প্রিন্ট করে না, এটি কেবল আইডির ক্রমিকভাবে প্রিন্ট করে, তাই গ্রেপ-সি। এই ক্ষেত্রে কাজ করবে না। স্মার্ট চিন্তা যদিও।
— জন টি


@ জন টি: ওহ - ভাল, প্রদত্ত স্ক্রিন শট, আপনি সঠিক। আমি ম্যাকস এক্স-তে 'ব্যবহারকারীদের' পরীক্ষা করেছি - তবে কেবলমাত্র একজন ব্যবহারকারীর সাথে লগ ইন করেছি When
— জোনাথন লেফলার

1
আরও ব্যবহারকারীর অনুকরণের জন্য আপনি নিজের বাক্সে এসএসএইচ করতে পারেন :)
— জন টি

এই মূল্যবান তথ্যের জন্য আপনাকে ধন্যবাদ, যদিও আমি "ব্যবহারকারী" কমান্ডটি বজায় রাখতে চেয়েছিলাম। ধন্যবাদ আপনাকে ধন্যবাদ।

7

একটি শেল খুলুন এবং টাইপ করুন:

who -q

শেষ লাইনটি আপনাকে একটি গণনা দেবে।

সম্পাদনা করুন:

(দীর্ঘশ্বাস) আমি প্রশ্নটি ভুল বুঝেছি। এখানে কিছুটা হিংস্র শক্তি প্রয়োগ রয়েছে:

অনন্য ব্যবহারকারীর নাম দেখতে:

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

অনন্য ব্যবহারকারীর একটি গণনা দেখতে:

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

মোটটিতে একই ব্যবহারকারীর সমস্ত লগইন গণনা করে।
— হাইয়ালকি

পুনরায় সম্পাদনা পরীক্ষা করে দেখুন, আমি মনে করি আপনি খুঁজে পাবেন যে নতুন উত্তরগুলি এটি।
— অ্যাভেরি পেইন

এটি এখনও কাজ করে না, ইউনিক কেবল ডুপ্লিকেট ধারাবাহিক লাইনগুলি সরিয়ে দেয়, আপনাকে প্রথমে কে আউটপুটটি বাছাই করতে হবে।
— থিওথের রিসিভ 18

আমি সকাল 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

এখানে টিঙ্কের দুর্দান্ত অ্যাডক পোস্টের একটি বাশ সংস্করণ :

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

কে এই তালিকাটি মুদ্রণ করেছে, কাটটি প্রথম সারির ব্যতীত সমস্ত কিছু সরিয়ে দেয়, বাছাই করুন - এটি সাজান এবং ডুপ্লিকেটগুলি সরান এবং ডাব্লুসি-লাইনগুলি লাইন গণনা করে। উবুন্টু / বাশ এ আমার জন্য ভাল কাজ করে :)


1

আপনি কেবল w( /usr/bin/wআমার রেড হ্যাট ভিত্তিক সিস্টেমে) ব্যবহার করতে পারেন বা uptimeতারা লগ ইন করা প্রকৃত সংখ্যা দেখায় show

ওয়াট:

                              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

আপনি সর্বদা শীর্ষস্থানীয় ইউনিক্সের জন্য নিখরচায় সরঞ্জামটি ডাউনলোড করতে পারেন। এটি ব্যবহারকারীদের একটি তালিকা তৈরি করে এবং তারা সিস্টেমে সে সময়ে কী করছে তাও তৈরি করে এবং যতক্ষণ না এটি চলমান থাকবে আপডেট অবিরত থাকবে।

এটি http://www.unixtop.org/ এ অবস্থিত

এটিতে অনেকগুলি কমান্ড লাইন সুইচ রয়েছে যাতে আপনার সন্ধান করা তথ্যগুলি বের করতে সক্ষম হওয়া উচিত।


আমি এখনও একটি লিনাক্স ডিস্ট্রো খুঁজে পেয়েছি যা ডিফল্টরূপে শীর্ষে নেই, প্যাকেজগুলি থেকে এটি ইনস্টল করার কোনও বিকল্প নেই।
— theotherreceive

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

2
এটি কিমের উত্তরের একটি সামান্য পরিবর্তনের মতো বলে মনে হচ্ছে এবং এতে কোনও ব্যাখ্যা নেই। উত্তরটিতে মন্তব্য হিসাবে এটি আরও উপযুক্ত হতে পারে (যার জন্য আরও কিছুটা রেপ দরকার)। উদ্দেশ্যটি হ'ল প্রতিটি উত্তর এমন একটি সমাধান সরবরাহ করে যা ইতিমধ্যে অবদানের চেয়ে সম্পূর্ণ আলাদা।
— ফিক্সার 1234

-2

আপনি যদি লগ ইন এবং সঠিক অনুক্রমে লগ-ইন মোট ব্যবহারকারীর সংখ্যা সন্ধান করেন তবে চালানোর জন্য সেরা আদেশটি

cat -n /etc/passwd

2
না, এটি সেই আদেশটি করে না। cat -nপ্রতিটি ফাইলের সমস্ত লাইন মুদ্রণ করে। আপনি সেই সিস্টেমে থাকা ব্যবহারকারীদের একটি তালিকা পাবেন তবে আপনি বেশি লগইন তথ্য পাবেন না।
— সিপাস্ট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.