GUIアプリは使っても、監視はCLIでやりたい

弊社では、クラウドサーバー上で自動化ツールを運用しています。クラウドサーバ上のLinuxもGUIがあるので、Chromeなどはヘッドレスではなく、GUIを持ったまま動かすことも可能です。

しかしながら、大量のサーバーをGUIで管理するのは大変なので、GUIアプリもCUIで操作をしたくなります。そこで便利なのが、xdotoolというコマンドです。

前準備(インストール)

Ubuntuを例にします。

$ apt install xdotool

あらかじめ、X のディスプレイ番号は環境変数に設定しておく必要があります(私は10番をよく使います)

$ export DISPLAY=:10

ここから実例です
chromeという単語が含まれているWindowの番号をリストアップ(プロセスIDではない)

$ xdotool search --name chrome
48234497
52428801
46137345
50331649

chromeという単語が含まれているWindowの番号をリストアップして、そのウインドウのタイトルを表示

$ xdotool search --name chrome | xargs -L1 xdotool getwindowname
Yahoo! JAPAN - Google Chrome
Yahoo! JAPAN - Google Chrome
google-chrome
google-chrome

google-chromeという単語が含まれているWindowの番号をリストアップしてそのウィンドウのすべてを閉じる

xdotool search --name google-chrome | xargs -L1 xdotool windowclose

chromeのタイトルを1秒おきに監視して、変化があったらハイライト

$ watch -d -n1 "xdotool search --name chrome | xargs -L1 xdotool getwindowname"

何かの拍子でひらいてしまった別ウィンドウなどのゴミが溜まってないかどうかを、CUIから確認して閉じることがコマンドからできるというのは、自動化の観点でも便利です。