Xサーバーが実行されていないときにアクティブウィンドウの画像を保存する方法

Xサーバーが実行されていないときにアクティブウィンドウの画像を保存する方法

サーバーとして使用したいリモートの場所にコンピュータがあります。常にふたを閉じておき、画面が消えたら常に実行するように設定しておきました。これは、サーバーを使用してソフトウェアを実行するためです。実行中のアプリケーションのアップデートを取得するためにスクリーンショットを撮りたいです。 Xサーバーが実行されていないときにアクティブウィンドウの画像を保存する方法があるかどうか疑問に思います。

アップデート:ps -e | grep XXorgの出力PID:581。だから私のXserverは実行中です。

更新:X11転送を使用しません。

アップデート:可能であれば、リモートコンピュータのアクティブウィンドウ(firefox)のスクリーンショットを撮る必要があります。そのスクリーンショットを自分のリモートコンピュータに保存して使用してください。scp host1:/path/to/screenshot/ localhost:/destinationfile

答え1

このようなユーティリティを使いたいscrot

sshリモートシステムで次のコマンドを実行できます。

scrot '%Y-%m-%d_$wx$h.png' -e 'mv $f /home/user/shots/' 

このコマンドはファイル名を使用して現在の画面のスクリーンショットを撮り、ファイルがある場合はそのディレクトリYEAR-MONTH-DAY_SCREENWIDTH_SCREENHEIGHT.pngにファイルを移動します。/shots入力なしで定期的に実行する必要がある場合予約されたこと

実行したいコマンドを使用してbashスクリプトを作成します。毎時間コマンドを実行する場合は、次のようになります。

#!/bin/bash
scrot '%Y-%m-%d-%H.png' -e 'mv $f /home/user/screenshots/'

このファイルを適切な場所に保存して/home/user/scripts実行可能にします(chmod +x screenshot.sh)。

毎時間実行するには、ユーザーのcrontabに次の行を含める必要があります(crontab -eユーザーのcrontabを編集するには実行)。

1 * * * * /home/user/scripts/screenshot.sh >/dev/null 2>&1

これはscreenshot.sh各時間の最初の1分に実行されます。

あるいは、スクリプトを保存し/etc/cron.hourlyて毎時間実行することもできます。

ここ確認する必要があるcrontabの使用に関する関連記事です。

scrotあなたの要件を満たしているか、cronjobが正しく機能しているかをテストしてください。その後、プロセスをさらに自動化して画像を自動的に電子メールで送信したり、.pushを介してコンピュータにプッシュしたりできますscp

頑張ってください!

答え2

Xで実行中のアイテムがある場合、Xはまだ実行中です。 Xを殺すと、Xを使用するほとんどのプログラムが終了します。

したがって、いくつかのことができます(たとえば、リモート用語にDISPLAY変数を設定する必要があることに注意してくださいDISPLAY=:0)。

  1. import -window root screenshot.pngImagemagickには、実行時にスクリーンショットを提供する「インポート」というユーティリティがあります。
  2. scrotはスクリーンショットを撮ることができますが、コマンドラインがわかりません。
  3. x11vncを使用すると、vncを介して実行されているXディスプレイにアクセスできます。

関連情報