サーバーとして使用したいリモートの場所にコンピュータがあります。常にふたを閉じておき、画面が消えたら常に実行するように設定しておきました。これは、サーバーを使用してソフトウェアを実行するためです。実行中のアプリケーションのアップデートを取得するためにスクリーンショットを撮りたいです。 Xサーバーが実行されていないときにアクティブウィンドウの画像を保存する方法があるかどうか疑問に思います。
アップデート:ps -e | grep X
Xorgの出力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
)。
import -window root screenshot.png
Imagemagickには、実行時にスクリーンショットを提供する「インポート」というユーティリティがあります。- scrotはスクリーンショットを撮ることができますが、コマンドラインがわかりません。
- x11vncを使用すると、vncを介して実行されているXディスプレイにアクセスできます。