「シャットダウン前に他のユーザーが作業中でないか調べたい」
Linuxサーバーを運用していると、現在のログイン状況をすばやく把握したい場面は多くあります。そのときに使うのが
who コマンドです。この記事では、
who コマンド の実践的な使い方を解説します。基本的なログインユーザー確認から、
who am i・w・last との使い分け、シャットダウン前の安全確認手順、不審なログイン検出まで網羅しました。・who コマンドはログイン中のユーザー一覧(ユーザー名・端末・ログイン時刻・リモートIPなど)を表示する
・who am i で自分自身のセッション情報(端末・ログイン時刻・接続元)を確認できる
・シャットダウン前のユーザー確認や不審なログイン検出に活用する
・より詳細な情報(CPU使用率・実行中コマンド)が必要なら w コマンドを使う
・ログイン履歴を遡って確認するには last コマンドを使う
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
whoコマンドとは?仕組みと出力の読み方
who コマンドは /var/run/utmp(または /var/run/utmpx)ファイルを参照して、現在ログイン中のユーザー情報を表示します。このファイルはカーネルがログイン・ログアウト時に自動更新するため、who の出力は常にリアルタイムの状態を反映しています。出力の各フィールドの意味は以下のとおりです。
・ユーザー名:ログインしているユーザーの名前
・端末(tty/pts):使用している端末。pts はSSH等の仮想端末、tty はローカル端末
・ログイン時刻:そのセッションのログイン日時
・リモートホスト名またはIP:末尾の括弧内。ローカルログインの場合は表示されない
基本的な使い方
1. ログイン中のユーザー一覧を表示する
引数なしで実行すると、現在ログインしているすべてのユーザー情報が表示されます。# ログイン中のユーザー一覧を表示する $ who root pts/1 Apr 7 09:00 pakira pts/3 Apr 7 14:30 (192.168.2.100) tomohiro pts/6 Apr 7 17:50 (192.168.2.102)
2. 自分自身の情報だけを表示する(who am i)
su コマンドでユーザーを切り替えた後など、「今のセッションが何のユーザーか」を確認したい場合は who am i が便利です。# 自分自身のログイン情報だけを表示する $ who am i pakira pts/5 Apr 7 15:37 (192.168.2.100)
whoami コマンドはユーザー名だけを返しますが、who am i はセッション情報(端末・ログイン時刻・接続元)も合わせて表示します。3. 起動時刻とランレベルを確認する(-b / -r)
-b でシステムの最終ブート時刻、-r で現在のランレベルを確認できます。# 最後に起動した日時を確認する $ who -b system boot Apr 7 05:00 # 現在のランレベルを確認する $ who -r run-level 3 Apr 7 05:00
応用・実務Tips
wコマンドとの使い分け
w コマンドは who より詳細な情報を表示します。CPU使用率や実行中のコマンドも確認できるため、サーバーの負荷状況も同時に把握したい場合に便利です。$ w 17:55:00 up 12:55, 3 users, load average: 0.01, 0.05, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/1 192.168.1.1 09:00 8:55 0.02s 0.01s -bash pakira pts/3 192.168.2.100 14:30 2:00 0.05s 0.00s vim config.txt tomohiro pts/6 192.168.2.102 17:50 0.00s 0.01s 0.00s w
lastコマンドでログイン履歴を遡る
last コマンドは /var/log/wtmp を参照し、過去のログイン・ログアウト履歴を表示します。不審なアクセスがなかったか確認するセキュリティ監査にも使われます。# 最近のログイン履歴を表示する $ last | head -10 tomohiro pts/6 192.168.2.102 Tue Apr 7 17:50 still logged in pakira pts/3 192.168.2.100 Tue Apr 7 14:30 still logged in root pts/1 192.168.1.1 Tue Apr 7 09:00 still logged in # 特定ユーザーのログイン履歴だけを確認する $ last pakira
シャットダウン前のユーザー通知
サーバーを再起動・シャットダウンする前に、他のユーザーが作業中でないかを確認します。ユーザーがいる場合はwall コマンドで全員に事前通知するのがマナーです。# シャットダウン前にログインユーザーを確認する $ who # ユーザーがいる場合は全員に通知する $ sudo wall "5分後にサーバーを再起動します。作業を保存してください。"
トラブルシュート・エラー対処
whoコマンドで何も表示されない
who を実行しても何も出力されない場合は、/var/run/utmp ファイルが破損または削除されている可能性があります。# utmpファイルの存在を確認する $ ls -la /var/run/utmp # ファイルが存在しない場合は再作成する(再起動が最も確実) $ sudo touch /var/run/utmp $ sudo chmod 664 /var/run/utmp
知らないIPアドレスからのログインを検出したとき
who の出力に見覚えのないIPアドレスが表示されている場合は、不正アクセスの可能性があります。# 不審なログインを確認する $ who tomohiro pts/3 Apr 7 14:00 (203.0.113.100) # 見覚えのないIPアドレス # 詳細な履歴を確認する $ last | head -20 # 不審なセッションを強制切断する(root権限が必要) # pkill -KILL -t pts/3
本記事のまとめ
| やりたいこと | コマンド |
|---|---|
| ログイン中のユーザー一覧を確認する | who |
| 自分自身のセッション情報を確認する | who am i |
| 現在のユーザー名だけを確認する | whoami |
| CPU使用率・実行コマンドも合わせて確認する | w |
| ログイン履歴を遡って確認する | last |
| システムの最終ブート時刻を確認する | who -b |
サーバーのログイン状況をすばやく把握して、不審なアクセスを見逃していませんか?
コマンドの使い方を一つひとつ覚えていくのは時間がかかります。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:suコマンドでユーザーを切り替える方法|sudoとの違いや「su -」の意味も
- 前のページへ:groupaddコマンドでグループを追加する方法|groupmod・groupdelや実務設計も
- この記事の属するカテゴリ:Linuxコマンド・LinuxコマンドU-Z・ユーザ・グループ管理コマンドへ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます