web-dev-qa-db-ja.com

物理コンソールを使用しているユーザーを見つける方法は?

スクリプトを使用して、ユーザー名を確認したい-現在、物理コンソール(キーボード、マウス、グラフィカルディスプレイのコマンドを持っているユーザー)にいるユーザーの

Xを実行しているユーザーを知りたいだけではありません(現在のコンソールを別の端末と別のユーザーに切り替えることができるため)。


明確にするために:
wwhoなどのコマンドは、誰がどの端末でログインしているかを示します。これは簡単です。ただし、現在物理コンソール(ディスプレイ、キーボードなど)を所有しているのは誰かを知りたいです。たとえば、2人のユーザーがディスプレイ:0と:1を実行し、ディスプレイを切り替えることができる場合、 ctrl+alt+7 そして ctrl+alt+8、現在どのユーザーが自分のディスプレイと実際の物理的な画面との間に接続を持っているかを知りたい。


もう1つの説明:
自分の自分のユーザー名を知ることに興味はありません。 physicalディスプレイを使用するユーザーを知る必要があるスクリプトを、別のユーザーまたはルートとして実行しています。異なるユーザーが実行する複数のXセッションがあり、それらの一部は仮想化され、一部はリモートXサーバーに接続されますが、実際にモニターに出力を表示しているセッションにのみ興味があります。


さらに別の説明:
コマンドが何であっても、押すと出力が異なる必要があります Ctrl+Alt+F1 (別の仮想コンソールへの切り替え)。

10
January

特定の答えを出すことはできないのではないかと心配していますが(技術をよく知らないため)、D-BusとConsoleKitを使用して見つけることができると思います。

たとえば、XからVTに切り替えてから戻ると、dbus-monitorでこれをリッスンします。

$ dbus-monitor --system | grep ConsoleKit
signal sender=:1.16 -> dest=(null destination) serial=19039 path=/org/freedesktop/ConsoleKit/Session2; interface=org.freedesktop.ConsoleKit.Session; member=ActiveChanged
signal sender=:1.16 -> dest=(null destination) serial=19040 path=/org/freedesktop/ConsoleKit/Seat1; interface=org.freedesktop.ConsoleKit.Seat; member=ActiveSessionChanged
signal sender=:1.16 -> dest=(null destination) serial=19041 path=/org/freedesktop/ConsoleKit/Session2; interface=org.freedesktop.ConsoleKit.Session; member=ActiveChanged
signal sender=:1.16 -> dest=(null destination) serial=19042 path=/org/freedesktop/ConsoleKit/Seat1; interface=org.freedesktop.ConsoleKit.Seat; member=ActiveSessionChanged
   string "/org/freedesktop/ConsoleKit/Session2"

具体的には、 GetActiveSession メソッドを使用できます。 dbus-sendの使用方法は次のとおりです(Sudoが必要な場合があります)。

$ dbus-send --system --type=method_call --print-reply --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Seat1 org.freedesktop.ConsoleKit.Seat.GetActiveSession

次に、アプリケーションに応じて、返されたオブジェクトのプロパティをチェックアウトします。これは、 Session へのオブジェクトパスでなければなりません。

5
nfirvine
[geek@atremis ~]$ w

 20:02:02 up 2 days,  8:37,  3 users,  load average: 0.00, 0.01, 0.00

USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT

geek     tty1     :0               Thu11    2days 35.11s  0.18s pam: gdm-passwo

geek     pts/0    athena           Fri22   21:04m  0.03s  0.03s -bash

geek     pts/1    blackbeauty      20:02    0.00s  0.14s  0.10s w

[geek@atremis ~]$

Wコマンドを使用して、誰がログオンしているかを確認できます。アイドル時間と実行中の内容-この場合、gdmはアクティブなログインを示し、アイドル時間はユーザーが2日間システムにいなかったことを示します。これとは対照的に、現在使用されていることを示すアイドル時間0.00のblackbeautyからのログインと比較してください。

5
Journeyman Geek

多くの方法があります:

  • whoami
  • w
  • echo $USER
  • logname
1
hytromo

別のコマンドは

whoami

現在ログインしているユーザー名が表示されます

0
Ketan Patel