Linuxでオンラインのユーザー数を確認するにはどうすればよいですか?


10

Linuxマシンにログオンしているユーザー数を確認するにはどうすればよいですか?「users」コマンドはログインしているすべての人を表示することを知っていますが、番号が必要です。マニュアルページに欠けているユーザー用のスイッチはありますか?grep -cコマンドを使用することを考えましたが、これを機能させるには、各ユーザー名で同じものを使用する必要があります。もっと簡単な方法はありますか?

回答:


15

wc(word count)コマンドを探しています。

これを試して:

users | wc -w

このアプローチ(who / wソリューション)は、ログインしているユーザーのみを示し、必ずしもアクティブなユーザー(つまり、プロセスを開始してからログアウトして、実行中のプロセスを残したユーザー)は表示しないことに注意してください。違いについて説明します。
estani 2013年

18

古典的には、コマンドは「ユーザー」ではなく「誰」ですが、「誰」がより多くの情報を提供します。元のUnix記事(70年代半ば)を振り返ると、例は次のようになります。

who | wc -l

「wc -l」を使用すると、出力の行がカウントされます。「users」と「who」の両方で機能します。'-w'の使用は、ユーザーごとに1つの単語がある場合にのみ確実に機能します( 'users'の場合​​と同様に 'users'の場合​​と同様)。

行をカウントするには、「grep -c」を使用できます。空白でないユーザー名のみに関心があるので、次のようにすることができます。

who | grep -c .

各行には常に少なくとも1つの文字があります。


で述べたように、コメントによるジョン・Tusersコマンドが異なってwho点の数です。最も重要なのは、1行に1つの名前を付けるのではなく、名前を1行にいくつか広げるということです。ユーザー数が多くなると何が起こるかをテストするのに十分なユーザーがログインしているマシンがありません。他の違いは、使用中の端末接続について「誰」が報告することです。複数のターミナルウィンドウが開いていると、1人のユーザーに対して複数の行が表示されますが、「ユーザー」はログインしたユーザーを1回だけ表示するようです。

この違いの結果として、 ' grep -c .'公式は 'users'コマンドでは機能しません。「wc -w」が必要です。


小さなnitpick-usersコマンドはユーザーごとに1行を出力せず、IDを順番に出力するだけなので、grep -cを実行します。この場合は機能しません。でもスマートな考え方。
ジョンT

これは、次に
John T

@ジョンT:ああ-まあ、スクリーンショットを与えられて、あなたは正しいです。MacOS Xで「ユーザー」をテストしましたが、1人のユーザーだけがログインしています。2人目のユーザーがログインした状態でダブルチェックすると、「すべて1行で」の動作が見られます。
ジョナサンレフラー、

1
より多くのユーザーをシミュレートするには、自分のボックスにSSH接続できます:)
John T

「users」コマンドを使い続けたかったのですが、この貴重な情報をありがとうございます。ありがとうございます。

7

シェルを開いて次のように入力します。

who -q

最後の行はあなたに数を与えるでしょう。

編集:

(ため息)私は質問を誤解しました。これはやや強引なアプローチです:

一意のユーザー名を表示するには:

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

ユニークユーザーの数を表示するには:

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

同じユーザーのすべてのログインを合計でカウントします。
hayalci 2009

再編集を確認してください。新しい回答がそれに対処していることがわかります。
エイブリーペイン

これはまだ機能しません。uniqは重複する連続する行を削除するだけです。最初にだれの出力をソートする必要があります。
theotherは、

それが午前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)

それは私のラップトップにあるので、私は唯一のユーザーですが、3回ログオンしています。

$ 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

誰がリストを出力し、cutは最初の行以外をすべて削除し、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

そして、1つのパイプのみを使用する方法...

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

:}



0

TOPと呼ばれるUNIX用の無料ツールをいつでもダウンロードできます。ユーザーのリストと、その時点でシステム上でユーザーが実行していることを生成し、実行中は更新を続けます。

それは次の場所にあります。http://www.unixtop.org/

コマンドラインスイッチが多数あるため、探している情報を抽出できます。


私は、デフォルトでtopを含まないLinuxディストリビューションをまだ見つけていません。パッケージからインストールするオプションがないことは言うまでもありません。
theotherは、

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

2
これはキムの答えのマイナーなバリエーションのようで、説明は含まれていません。その回答に対するコメントとしてより適切な場合があります(これにはもう少し担当者が必要です)。意図は、それぞれの回答が、すでに提供されているものとは実質的に異なる解決策を提供することです。
fixer1234

-2

適切な順序でログインおよびログオフしたユーザーの総数を探している場合、実行するのに最適なコマンドは次のとおりです。

cat -n /etc/passwd

2
いいえ、それはそのコマンドが行うことではありません。cat -nファイル内のすべての行に番号を付けて出力するだけです。そのシステムに存在するユーザーのリストが表示されますが、ログイン情報はそれほど多くありません。
cpast 2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.