回答:
古典的には、コマンドは「ユーザー」ではなく「誰」ですが、「誰」がより多くの情報を提供します。元のUnix記事(70年代半ば)を振り返ると、例は次のようになります。
who | wc -l
「wc -l」を使用すると、出力の行がカウントされます。「users」と「who」の両方で機能します。'-w'の使用は、ユーザーごとに1つの単語がある場合にのみ確実に機能します( 'users'の場合と同様に 'users'の場合と同様)。
行をカウントするには、「grep -c」を使用できます。空白でないユーザー名のみに関心があるので、次のようにすることができます。
who | grep -c .
各行には常に少なくとも1つの文字があります。
で述べたように、コメントによるジョン・T、usersコマンドが異なってwho点の数です。最も重要なのは、1行に1つの名前を付けるのではなく、名前を1行にいくつか広げるということです。ユーザー数が多くなると何が起こるかをテストするのに十分なユーザーがログインしているマシンがありません。他の違いは、使用中の端末接続について「誰」が報告することです。複数のターミナルウィンドウが開いていると、1人のユーザーに対して複数の行が表示されますが、「ユーザー」はログインしたユーザーを1回だけ表示するようです。
この違いの結果として、 ' grep -c .'公式は 'users'コマンドでは機能しません。「wc -w」が必要です。
シェルを開いて次のように入力します。
who -q
最後の行はあなたに数を与えるでしょう。
編集:
(ため息)私は質問を誤解しました。これはやや強引なアプローチです:
一意のユーザー名を表示するには:
who | awk '{ print $1 }' | sort | uniq
ユニークユーザーの数を表示するには:
who | awk '{ print $1 }' | sort | uniq | wc -l
セッション数、または実際のユーザー数を確認しますか?
$ 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
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
あなたは、単に使用することができます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
http://www.gnu.org/software/coreutils/manual/html_node/who-invocation.html
「who」は、現在ログオンしているユーザーに関する情報を出力します。あらすじ:
who [オプション] [ファイル] [am i]
TOPと呼ばれるUNIX用の無料ツールをいつでもダウンロードできます。ユーザーのリストと、その時点でシステム上でユーザーが実行していることを生成し、実行中は更新を続けます。
それは次の場所にあります。http://www.unixtop.org/
コマンドラインスイッチが多数あるため、探している情報を抽出できます。
who | cut -d ' ' -f1 | uniq | wc -l
適切な順序でログインおよびログオフしたユーザーの総数を探している場合、実行するのに最適なコマンドは次のとおりです。
cat -n /etc/passwd
cat -nファイル内のすべての行に番号を付けて出力するだけです。そのシステムに存在するユーザーのリストが表示されますが、ログイン情報はそれほど多くありません。