who コマンドは、現在ログインしているユーザーの情報を表示するコマンドです。GNU coreutils に含まれており、Linux では GNU 版が、FreeBSD では BSD 版が提供されています。基本的な動作は共通していますが、細かなオプションの違いがあります。

基本的な使い方

編集
who [オプション]

主なオプション(GNU coreutils版)

編集
主なオプション
オプション 説明
-a, --all すべての情報を表示 (-b -d --login -p -r -t -T -u を含む)
-b, --boot システムの最終起動時刻を表示
-d, --dead 終了したプロセスを表示
-H, --heading 出力に見出しを追加
-l, --login ログインプロセスを表示
-m 実行ユーザーの情報のみを表示 (who am i と同じ)
-p, --process init によって作成されたプロセスを表示
-q, --count ログインしているユーザーの数を表示
-r, --runlevel 現在のランレベルを表示
-s ユーザー名、端末、ログイン時刻のみを表示(デフォルト動作)
-t, --time システムの最終クロック変更時刻を表示
-u, --users ログインユーザーの情報を詳細に表示

現在のログインユーザーを表示

編集
who

または

who -s
出力例
user1    tty1         2025-01-31 10:15
user2    pts/0        2025-01-31 10:20

自分自身の情報を表示

編集
who am i

または

who -m
出力例
user1    pts/0        2025-01-31 10:20

システムの最終起動時刻を表示

編集
who -b
出力例
system boot  2024-01-30 08:00

ログインユーザーの数を表示

編集
who -q
出力例
user1  user2  user3
# users=3

すべての情報を表示

編集
who -a
出力例(環境により異なる):
        system boot  2024-01-30 08:00
user1      tty1        2025-01-31 10:15 00:10  192.168.1.2
user2      pts/0       2025-01-31 10:20 00:05  192.168.1.3

FreeBSD 版との違い

編集

FreeBSD でも who コマンドは提供されていますが、GNU coreutils 版といくつか違いがあります。

主な違い:

編集
  1. -q(ユーザー数表示)オプションが FreeBSD にはない
    • FreeBSD でログインユーザー数を取得するには who || wc -l を使う。
    who || wc -l
    
  2. -a(すべての情報表示)の内容が異なる
    • FreeBSD では -a を指定しても -b-d などの情報が含まれない。
  3. GNU coreutils 版を FreeBSD で使う方法
    • coreutils パッケージをインストールすると gwho という名前で GNU 版 who が使える。
    pkg install coreutils
    gwho -q  # GNU coreutils 版の who
    

詳しくは、それぞれの環境で man who を確認してください。