~からhttps://unix.stackexchange.com/a/505644/674
SSHを使用している場合は、ssh -Xまたはssh -Yを使用して接続された画面にアクセスできます。プログラムはあるコンピュータで完全に実行され、別のコンピュータでは表示されます。したがって、SSHを介してリモートシステムでlight-lockerを実行すると、ローカルディスプレイはロックされますが、リモートディスプレイはロックされません(gnome-terminalを実行するか、別のコマンドを実行するとリモートシステムで実行されますが、ローカルで表示されるのと同じです)。
画面を再ロックするには再起動する必要があります。ただし、SSHではなくロックしたいXセッションで再起動するように注意してください。
SSH経由でコンピュータに接続していて、画面をロックしたいです。なぜ失敗したのか、どうしたらいいのか教えてくれる人はいますか?ありがとうございます。
$ xscreensaver-command -lock
xscreensaver-command: warning: $DISPLAY is not set: defaulting to ":0.0".
xscreensaver-command: no screensaver is running on display :0.0
$ DISPLAY=:0 xscreensaver-command -lock
xscreensaver-command: no screensaver is running on display :0
リモートホストで実行されているXサーバーがないことを確認する方法がわかりません。
$ ps -A | grep -i xorg
448 ? 00:00:29 Xorg
605 ? 00:00:27 Xorg
766 tty7 05:19:26 Xorg
2175 ? 00:02:58 Xorg
3343 ? 00:00:24 Xorg
8520 ? 00:00:28 Xorg
12564 ? 00:00:22 Xorg
24655 ? 00:00:13 Xorg
26692 ? 00:00:28 Xorg
26704 ? 00:00:25 Xorg
26852 ? 00:00:29 Xorg
27034 ? 00:00:23 Xorg
答え1
Xがどのように機能するかを理解する必要があります。ローカルシステムLOCがあり、リモートシステムREMのSSHがあります。 2つのXディスプレイがあります:LOC:0.0とREM:0.0。 LOCで実行すると、ssh -X REM
REMに「LOC:0.0」を指す「REM:10.0」という新しい仮想Xディスプレイが作成されます。したがって、REMでプログラムを実行すると、グラフィックはREM:10に転送され、そこからLOC:0.0に転送されます。
REMでVNCサーバーを実行している場合は、「REM:1.0」と表示されます(例:)。同じコンピュータでさまざまなXディスプレイを実行して、アプリケーションの出力を別の物理画面または仮想画面に送信できます。
REMに接続するときに、「REM:0.0」、「REM:1.0」、またはその他のXディスプレイ(VNCは特別なXディスプレイのみ)を使用してローカルにログインしたユーザーがいる場合は、その画面にSSHを介して移動できます。特殊変数「DISPLAY」の値を変更することによって。
コンピュータのローカルコンソールに接続して実行すると、次の結果がecho $DISPLAY
表示されます。
:0.0
SSHを使用してLOCからREMに接続し、起動したアプリケーションをREM画面(REM:0.0)に表示するには、DISPLAY値を変更します。
export DISPLAY=:0.0
プログラムを実行すると、REM画面に表示されます(もちろん、同じユーザーがセッションを開いた場合)。
あなたの場合は、「REM:0.0」に開いているセッションが必要ですが、そうではありません。セッションがVNCを使用して実行されている場合は「REM:1.0」である必要があるため、xscreensaverを実行するにはそれに応じてDISPLAYを設定する必要があります。
export DISPLAY=:1.0
xscreensaver
xscreensaver-command -lock
答え2
このソリューションを使用するには、xdotoolをインストールする必要があります。これは私のLinux Mintで完璧に動作します
export DISPLAY=:0
xdotool key Ctrl+alt+l