HP-UX General
1824219 メンバー
4631 オンライン
109669 解決策
新規ポスト

who と last コマンドの出力結果

 
Bouze
時折のコントリビューター

who と last コマンドの出力結果

who コマンドで誰がログインしているのかを表示できますが、last コマンドで「still login」となっているユーザの数と異なっています。ユーザがログアウトすると still login ではなくなると思っていますが、これは正しいでしょうか。

また、現在実際にログインしているユーザを確認するには who コマンドと last コマンドの「still login」となっているユーザを見るのと、どちらが正しい状態なのでしょうか。
5件の返信5
テレコム担当者
尊敬されているコントリビューター

who と last コマンドの出力結果

>これは正しいでしょうか。

正しくないことがあります。

man last より、

last コマンドは、 /var/adm/wtmp (ここには、すべてのログインとログアウ

トのレコードが記録されます) ファイルを逆方向に検索して、ユーザ、tty、

またはユーザとttyの任意のグループに関する情報を探します。

wtmp には telnet, rlogin, remsh, ftp などでの中断、異常終了が

残ってしまいます。

>どちらが正しい状態なのでしょうか。

一般論としても who です。

推測も入りますが、who はカーネルのプロセステーブルから uid を

持ってきていますので、基本的に「システムにログインしているユーザを

表示」という機能に対し、間違うことはありません。

cube0015
レギュラーアドバイザー

who と last コマンドの出力結果

> who コマンドで誰がログインしているのかを表示できますが、last コマンドで「still login」となっているユーザの数と異なっています。ユーザがログアウトすると still login ではなくなると思っていますが、これは正しいでしょうか。

ftpd/telnetd/rlogind が wtmp へログアウトレコードを書き込むのは以下のタイミングですね。

・ログインしているユーザがログアウトした

・コネクションが切断された

すなわち、ほとんどの場合、問題無くログアウトレコード書き込んでからプロセスを終了します。

しかし、以下のような場合には、ユーザがログアウトしたことを認識できずにログアウトレコードが書き込まれないことがあるようです。

・ftpd/telnetd/rlogind が強制終了した場合

・クライアント側サーバがダウンした場合

telnet や ftp で接続中にshutdownが走った場合、ftpd, telnetd は強制終了させられます。その場合、wtmpにログアウトレコードは書かれません。

> また、現在実際にログインしているユーザを確認するには who コマンドと last コマンドの「still login」となっているユーザを見るのと、どちらが正しい状態なのでしょうか。

両方から確認するのがベターだと考えます。

hazelwood
信頼あるコントリビューター

who と last コマンドの出力結果

> 推測も入りますが、who はカーネルのプロセステーブル

> から uid を持ってきていますので、

whoは/etc/utmpから情報を持ってきます。(man pageに記載があります。)

ですので、こちらも同様に正しくない場合があります。

lastとwhoで差異がある場合、ps -aef | grep ターミナル名 で正しいかどうか確認するといいのではないでしょうか?
テレコム担当者
尊敬されているコントリビューター

who と last コマンドの出力結果

>whoは/etc/utmpから情報を持ってきます。(man pageに記載があります。)

>ですので、こちらも同様に正しくない場合があります

すいません。そのとおりでした。

Solaris も RedHat linux も同じ仕様でした。

Bouze
時折のコントリビューター

who と last コマンドの出力結果

皆さんありがとうございました。

last コマンドの結果で、異常終了や中断で「still login」が残ってしまったのであれば、少なくとも who の結果は last の「still login」の結果の一部であると思っていました。who にはあるのに last にはないものを見つけたのですが、psコマンドで確認したところ、ログインしていることが確認できました。

正しい情報を見るには、who, last だけでなくて ps も必要なんですね。

ありがとうございました。