whoコマンド:現在のログインユーザーを確認する基本コマンド

Linuxの学習を始めたばかりの方や、日々Linuxを利用している方にとって、システムの状態を把握することは非常に重要です。その中でも、現在システムにログインしているユーザーを確認する「who」コマンドは、システム管理やトラブルシューティングにおいて欠かせないツールの一つです。本記事では、Linuxの基本コマンド「who」について、その概要から基本的な使い方、主要なオプション、そして実践的な応用例までを網羅的に解説します。Linuxをさらに深く理解するための第一歩として、ぜひご活用ください。


whoコマンドの基本的な使い方

whoコマンドとは?

whoコマンドは、現在システムにログインしているユーザー情報を表示するためのコマンドです。このコマンドを使うことで、以下のような情報を簡単に取得できます:

  • ユーザー名:現在ログイン中のユーザーの名前。
  • ログイン端末:ユーザーがログインしている端末(TTYやPTS)。
  • ログイン日時:ユーザーがログインを開始した日時。
  • ホスト名やIPアドレス:リモート接続の場合は、接続元のホスト名やIPアドレス。

このシンプルで実用的なコマンドは、システムの利用状況を把握する上で非常に重要です。

基本的な構文

以下がwhoコマンドの基本的な構文です。

who [オプション]

オプションを指定しない場合、デフォルトでログイン中の全ユーザー情報が表示されます。

使用例:whoコマンドの実行

以下のコマンド実行例を見てみましょう。

$ who
user1    pts/0        2023-10-01 10:00 (192.168.1.100)
user2    tty1         2023-10-01 09:45

この例では、現在2人のユーザーがログインしていることが分かります:

  • user1はリモートから接続しており、接続元のIPアドレスは192.168.1.100です。
  • user2はローカル端末からログインしています。

whoコマンドの主要なオプション

whoコマンドは、いくつかのオプションを利用することで、出力内容をカスタマイズしたり、特定の情報を効率的に取得することが可能です。ここでは、覚えておきたい主要なオプションを解説します。

1. -b:システムの最終起動時間を表示

システムが最後に起動された日時を確認する際に使用します。

$ who -b
         system boot  2023-10-01 08:30

この例では、システムが2023年10月1日の8時30分に起動されたことが分かります。サーバーの稼働状況を把握するのに役立つオプションです。


2. -r:現在のランレベルを表示

システムの現在のランレベル(動作モード)を確認します。ランレベルは、システムの動作モードを示し、主に以下の用途で利用されます:

  • マルチユーザーモード。
  • GUIモード(デスクトップ環境)。
  • メンテナンスモード(シングルユーザーモード)など。
$ who -r
         run-level 5  2023-10-01 08:30

この出力では、ランレベルが5(GUIモード)であることがわかります。


3. -q:ログインしているユーザー数を表示

現在ログインしているユーザーの数を簡潔に確認できます。

$ who -q
user1 user2
# users=2

この例では、2人のユーザー(user1user2)がログイン中であることを示しています。システムの利用状況を素早く把握したい場合に便利です。


4. --help:ヘルプメッセージを表示

whoコマンドに関する簡易的な使用方法やオプションの説明を確認できます。

$ who --help
Usage: who [OPTION]... [FILE] [am i]
Show who is logged on.
...

5. その他のオプション

  • -H:ヘッダー行を追加して出力を見やすくします。
  • --versionwhoコマンドのバージョン情報を表示します。

whoコマンドの応用

whoコマンドは基本的な使い方だけでなく、他のコマンドやスクリプトと組み合わせることで、さらに便利に活用することができます。ここでは、実践的な応用例をいくつか紹介します。

1. ログインユーザーの監視スクリプト

システム管理者にとって、ログインユーザーの動向を把握することは重要です。以下のシェルスクリプトは、ログインユーザー情報を1分ごとに記録します。

#!/bin/bash

# ログインユーザーを監視してログに記録
while true; do
  echo "$(date) - Current logged-in users:" >> /var/log/user_monitor.log
  who >> /var/log/user_monitor.log
  sleep 60
done

このスクリプトをバックグラウンドで実行すると、/var/log/user_monitor.logにユーザー情報が定期的に記録されます。


2. リモートユーザーの確認

リモートから接続しているユーザーを特定する方法を紹介します。grepや正規表現を組み合わせることで、リモート接続のユーザーのみを抽出できます。

$ who | grep -E '\([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\)'
user1    pts/0        2023-10-01 10:00 (192.168.1.100)

この例では、IPアドレスを含む行のみが表示され、リモートユーザーが確認できます。


3. システムの稼働時間との組み合わせ

uptimeコマンドとwhoコマンドを組み合わせることで、システムの稼働時間とログインユーザー情報を同時に確認することができます。

$ uptime && who
 10:30:00 up 2:00,  2 users,  load average: 0.00, 0.01, 0.05
user1    pts/0        2023-10-01 10:00 (192.168.1.100)
user2    tty1         2023-10-01 09:45

この出力では、システムがどのくらい稼働しているか、そして現在のログインユーザー情報を一目で把握できます。


4. ユーザーごとのログイン回数を集計

システムログを解析して、ユーザーごとのログイン回数を集計することも可能です。以下はlastコマンドとawkを活用した例です。

$ last | awk '{print $1}' | sort | uniq -c | sort -nr
 10 user1
  8 user2
  3 reboot

この例では、user1が10回、user2が8回ログインしていることが分かります。サーバーの利用状況を把握するのに便利です。


まとめ

whoコマンドは、そのシンプルさゆえに見過ごされがちですが、システムの状態を把握するためには欠かせないコマンドです。本記事では、whoコマンドの基本的な使い方、便利なオプション、さらに応用的な活用方法までを幅広く解説しました。

Linux初心者の方は、まずは基本的な使い方をしっかりとマスターし、システムの状態を定期的に確認する習慣を身につけましょう。また、中級者や上級者の方は、他のコマンドやツールと組み合わせることで、whoコマンドをさらに効果的に活用してください。

最後に、「知識は力」です。日々のLinux操作において、新しい知識を少しずつ積み上げ、効率的で快適な作業環境を築いていきましょう!

コメント

タイトルとURLをコピーしました