スクリプトを使用して、ユーザー名を確認したい-現在、物理コンソール(キーボード、マウス、グラフィカルディスプレイのコマンドを持っているユーザー)にいるユーザーの
Xを実行しているユーザーを知りたいだけではありません(現在のコンソールを別の端末と別のユーザーに切り替えることができるため)。
明確にするために:w
、who
などのコマンドは、誰がどの端末でログインしているかを示します。これは簡単です。ただし、現在物理コンソール(ディスプレイ、キーボードなど)を所有しているのは誰かを知りたいです。たとえば、2人のユーザーがディスプレイ:0と:1を実行し、ディスプレイを切り替えることができる場合、 ctrl+alt+7 そして ctrl+alt+8、現在どのユーザーが自分のディスプレイと実際の物理的な画面との間に接続を持っているかを知りたい。
もう1つの説明:
自分の自分のユーザー名を知ることに興味はありません。 physicalディスプレイを使用するユーザーを知る必要があるスクリプトを、別のユーザーまたはルートとして実行しています。異なるユーザーが実行する複数のXセッションがあり、それらの一部は仮想化され、一部はリモートXサーバーに接続されますが、実際にモニターに出力を表示しているセッションにのみ興味があります。
さらに別の説明:
コマンドが何であっても、押すと出力が異なる必要があります Ctrl+Alt+F1 (別の仮想コンソールへの切り替え)。
特定の答えを出すことはできないのではないかと心配していますが(技術をよく知らないため)、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 へのオブジェクトパスでなければなりません。
[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からのログインと比較してください。
多くの方法があります:
whoami
w
echo $USER
logname
別のコマンドは
whoami
現在ログインしているユーザー名が表示されます