概要
現在ホスト(システム)にログインしているすべてのユーザー名を一覧表示するためのシンプルなコマンドです。 who や w コマンドとは異なり、ログイン端末や時間などの付加情報は一切表示せず、ユーザー名のみをスペース区切りで、かつアルファベット順にソートして1行で出力します。スクリプト処理でログインユーザーのリストを配列として取得したい場合などに適しています。
仕様(引数・オプション)
構文
users [ファイル名]
※独自のオプションはヘルプ表示などを除いて存在しません。引数としてログイン履歴ファイル(wtmp 等)を指定することが可能です。
基本の使い方
オプションなしで実行すると、現在ログイン中のユーザー名を一覧表示します。同じユーザーが複数の端末でログインしている場合、その数だけ名前が表示されます。
BASH
# ログインユーザーを表示
users
実行結果例
hayashi mori mori root
実践コマンド
詳細情報を表示する w コマンドと比較する
users コマンドがいかにシンプルかを確認するために、ログイン状況を詳細に表示する w コマンドと比較します。w は「誰が」「どこから」「何をしているか」まで表示しますが、users は「誰がいるか」だけを返します。
BASH
# シンプルな一覧表示
users
# 詳細な状況表示
w
実行結果例
# users の結果
hayashi mori mori
# w の結果
12:45:01 up 10 days, 3:20, 3 users, load average: 0.05, 0.03, 0.01
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
mori pts/0 192.168.1.10 10:00 1.00s 0.10s 0.02s w
mori pts/1 192.168.1.10 10:05 2:40 0.05s 0.05s -bash
hayashi pts/2 192.168.1.11 11:30 10:00 0.02s 0.02s vi report.txt
過去のログイン履歴ファイルを参照する
デフォルトでは現在のログイン情報(/var/run/utmp)を参照しますが、引数に /var/log/wtmp などを指定することで、過去にログインしていたユーザーの履歴を同様の形式で出力させることも可能です。
BASH
# ログイン履歴ファイル(wtmp)を指定して表示
users /var/log/wtmp
まとめ
usersコマンドは、ログインユーザー名のみを抽出することに特化したツールです。 システム管理者が状況を目視確認する際は情報量の多い w コマンドや who コマンドの方が有用ですが、シェルスクリプトで for user in $(users); do ... のようにログインユーザー全員に対して一括処理を行いたい場合には、整形の手間がいらないこのコマンドが重宝します。
