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人のユーザー(user1
とuser2
)がログイン中であることを示しています。システムの利用状況を素早く把握したい場合に便利です。
4. --help:ヘルプメッセージを表示
who
コマンドに関する簡易的な使用方法やオプションの説明を確認できます。
$ who --help
Usage: who [OPTION]... [FILE] [am i]
Show who is logged on.
...
5. その他のオプション
-H
:ヘッダー行を追加して出力を見やすくします。--version
:who
コマンドのバージョン情報を表示します。
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操作において、新しい知識を少しずつ積み上げ、効率的で快適な作業環境を築いていきましょう!
コメント