Lubuntu にシステムモニターConkyを導入
こちらの ページ で EeePC 1005PEにインストールした Lubuntu 14.04LTS 64bitの LXDEデスクトップカスタマイズの続きです。システムモニターConkyを導入しました。(2016/02)
Conkyはパソコンのシステム情報や各デバイスの状態等をモニタリングするアプリです。Conky自身は特に何かを制御すると言う事はなくただデスクトップ上に結果を表示するだけです。
ここでは Conkyに下記の内容を表示させています。
- カーネルバージョン
- システム情報:CPU・メモリー・ネットワーキング・プロセス等
- デバイスの温度情報:CPU・HDD
下の画像は Conky導入後のデスクトップのスクリーンショットです。 Conkyはログイン後自動起動するように設定しています。
上の画像で CASE FAN:NONE となっているのは EeePCにファンセンサーが付いていないためと思われます。端末から sensorsコマンドを実行してもファン回転速度を取得する事は出来ませんでした。
GRUB設定ファイルにカーネル起動オプション acpi_enforce_resources=lax を記述して update-grub・パソコン再起動・sensors-detectするも CPUと HDDの温度以外表示されず。
注:このページは Legacy BIOS 対応であり、UEFIの確認はしていません
アプリケーションパッケージのインストール
それではシステムの情報を取得し表示するのに必要なアプリケーションパッケージをインストールします。
インストールパッケージは
conky-all | システム情報の表示 |
---|---|
lm-sensors | CPU 温度情報の取得 |
hddtemp | HDD 温度情報の取得 |
の3つです。端末から
$ sudo apt-get install conky-all lm-sensors hddtemp
を実行します。
2023年5月 追記|Ubuntu 22.04 LTSで hddtempパッケージは公式リポジトリから除外されました。それに伴ってインストール方法も変更になりました。Ubuntuフレーバーも同様です。
$ sudo apt update $ wget http://archive.ubuntu.com/ubuntu/pool/universe/h/hddtemp/hddtemp_0.3-beta15-53_amd64.deb $ sudo apt install ./hddtemp_0.3-beta15-53_amd64.deb
インストールが完了したら lm-sensorsにデバイス情報を認識させます。
端末から
$ sudo sensors-detect
を実行します。途中どのデバイスを認識させるか当方の環境では 10個程の問い合わせがありましたが全て「yes」と答えました。
その結果が fig1(冒頭),fig2(末尾)です。但し fig1~fig2間の表示は長すぎるので省略しています。
sensors-detect が完了したら端末から
$ sensors
を実行すると CPUと HDDの温度が表示されます(fig3)さらに -u オプションで詳細が表示されます。
続けて HDDの温度を見てみます。端末から
$ sudo hddtemp /dev/sda
の実行結果が下画像スクリーンショットです。
このHDDの温度を Conkyに表示させる訳ですからパソコンを起動してログインする段階で hddtempは起動していなければいけません。
つまり hddtempをデーモン(daemon)として動作させる必要があります。
このような各アプリで表示している数値をデスクトップ上に Conkyを使ってまとめて表示させる訳です。
Conky設定ファイル .conkyrc の作成
それではとりあえず Conkyを起動してみます。
端末から
$ conky
を実行すると下の画像のようにシステムモニタが表示されます。これは Conkyのデフォルトの設定でその設定ファイルは /etc/conky/ ディレクトリ内の conky.conf です。
しかし一般的にはこの設定ファイル conky.conf は使用しません。
この conky.conf をユーザーディレクトリにコピーし .conkyrc にリネームして使用します。何故この様な仕組みになっていいるのかは判りません。そうゆう仕様なので仕方ありません。
また GitHub(ギットハブ)のサイトから設定のサンプルが配布されていますがそれもやはり conkyrc のファイル名称になっています。
それでは端末から
$ cp /etc/conky/conky.conf /home/ユーザー名/.conkyrc
を実行して設定ファイルをホームディレクトリ内に作成(コピー)します。
この時ホームディレクトリメニュー [表示] から「隠しファイルを表示」にしておきます。下の画像は設定ファイル作成後のスクリーンショットです。
Linuxでは「.(ドット)」から始まるファイル名やディレクトリ(フォルダ)名は、非表示になります。
後はこの .conkyrcの内容を編集するだけなのですがデフォルトの表示は見ての通り殺風景なので GitHubのサイトから設定のサンプルをダウンロードして設定内容を編集した方が手っ取り早いと思います。
GitHubサイトの Conkyディレクトリ内 User Configs から conkyrc.txtファイルがダウンロード出来ます
Conkyを自動起動する
設定ファイル .conkyrcを作成したら次はログイン時に Conkyが表示されるようにスクリプトを作成して自動起動するように設定します。
ではまずホームディレクトリ内に起動スクリプトを作成します。
端末から
$ nano /home/ユーザー名/.conky_start.sh
nano editor : .conky_start.sh
#!bin/sh
sleep 15
/usr/bin/conky &
保存したら実行権を付与します。
端末から
$ chmod 755 .conky_start.sh
もしくは作成したスクリプトファイル右クリックからファイルのプロパティを開きパーミッションタブの実行を「すべて」にすると実行権が付与されます。下の画像はプロパティのスクリーンショットです。
最後にこのスクリプトがログイン時に自動実行され Conkyが起動するように設定します。具体的には /home/ユーザー名/.config/autostart ディレクトリ内に Conky.desktopファイルを作成します。
autostart ディレクトリ内にはすでに Dckyの desktopファイルが作成されているのでこれをコピーしてリネームします(fig4)ファイル名は任意です
続けてデスクトップエントリタブを開いてコマンドの欄に上述の起動スクリプトを実行するコマンドを下記のように記述します(fig5)
ファイルのプロパティ: /home/ ユーザー名 /.conky_start.sh
OKをクリックしてプロパティを閉じて一旦ログアウトし再度ログインすればおよそ 15秒後に Conkyが表示されます(fig6)
ここで前出の 15秒(sleep 15)と言う時間は、デスクトップの表示が完了してから Conkyを起動するための「待ち時間」です。
これは X-サーバーがクラッシュする等のトラブルを避けるためです。
従ってパソコンの性能によってデスクトップの表示が完了する時間は異なるので環境に合わせて時間設定する必要があります。
つまりこの 15秒は当方の環境に合わせて設定した時間なのです。
なお fig6の Conky表示の中で HDDの温度が N/Aとなっているのは hddtempがデーモン起動していないので HDDの S.M.A.R.T情報を取得出来ていないためです。hddtempのデーモン設定は後述しています。
以上で Conky設定完了です。
今回使用した Conky設定ファイル「.conkyrc」 ☚ download
HDD温度モニタリングアプリ hddtempのデーモン設定
hddtempを使って HDDの温度を Conkyに表示させるためにはパソコンを起動してログインする段階で hddtempは起動していなければいけません。
従って hddtempはデーモン(daemon)つまりバックグラウンドプロセスとして動作させる必要があります。
12.04LTSまでは hddtempをインストールの途中でデーモン起動させるかどうかの問い合わせがありました。
例)下の画像は Xubuntu 12.04LTS 32bit版のスクリーンショットです。①が 端末エミュレーターから、②が Synapticパッケージマネージャからインストールした時の問い合わせの様子です。
しかし 14.04LTS以降から端末、Synapticパッケージマネージャ共にこの問い合わせがないままインストールが完了してしまいます。
従って hddtempをデーモン起動するためにはユーザーが手動で設定しなければなりません。以下はその方法です。
それでは端末から
$ sudo dpkg-reconfigure hddtemp
を実行するとデーモン設定が表示(fig7)されます。ここでは一般ユーザーでインストールするので <いいえ> → 温度チェック(fig8)<了解> → デーモンを自動的に開始(fig9)<はい> →
→ リスン するインターフェイス(fig10)<了解> → リスンするポート番号(fig11)<了解> → で設定完了のメッセージが表示(fig12)されると同時にConkyにHDD温度が表示されます。
hddtempデーモン確認のため一旦ログアウトして再度ログインまたはパソコン再起動します。
上記画像中 Conky表示内の CPU温度が 51~53℃となっていますがこれは .conkyrcを正しく設定する前の値です
以上で hddtempのデーモン設定完了です。
.conkyrcの構文書式について|2018年6月追記
Conky 1.10以降の設定ファイル .conkyrcの構文書式が Lua と呼ばれるスクリプト言語に変更されました。詳細は GitHubの Configuration Settings へ。
Ubuntu 18.04LTSにおいて .conkyrcの構文書式が変更になっているのを確認しました。アプリケーションパッケージのバージョンは conky-all , 1.10.8-1です。
このバージョン以前の構文書式で書かれた .conkyrcですと以下のようなエラーメッセージと共にConkyのデザインは崩れてしまいす。
lxterminal:
fuukemn@f-system:~$ conky
conky: Syntax error (/home/fuukemn/.conkyrc:2: unexpected symbol near '#') while reading config file.
conky: Assuming it's in old syntax and attempting conversion.
conky: desktop window (400030) is subwindow of root window (297)
conky: window type - normal
conky: drawing to created window (0x2000001)
conky: drawing to double buffer
下の画像はその時の Ubuntu 18.04LTSのデスクトップのスクリーンショットです。
マトモに表示されていないのが分かると思います。書式がどのように変ったのか一部の例を挙げてみますと
コメントアウト | 旧)文頭に # を付ける | 新)文章や値を --[[ ]] で囲う |
---|---|---|
設定の記述 | 旧)設定を記述 | 新)conky.config = { 設定を記述 } |
引数のない設定 | 旧)yes または no | 新)"yes" または "no" もしくは false または true |
テンプレート | 旧)TEXT ${color blue} kernel $kernel on $machine |
新)conky.text = [[${color blue} kernel $kernel on $machine]] |
この表のようになっています。以下は旧・新の設定ファイルです。1.10.1-3 は Ubuntu 16.04LTSで 1.10.8-1 は 18.04LTSで実際に使用しているファイルです。
旧)Conky 1.10.1-3 設定ファイル「.conkyrc」 ☚ download
新)Conky 1.10.8-1 設定ファイル「.conkyrc」 ☚ download
なお、新)のファイルには以下の2行を追加しています。
Gedit : .conkyrc
own_window_argb_visual = true,
own_window_argb_value = true,
当方の環境の Ubuntu 18.04 LTSにおいてはこのコードを追加することで正常に表示されました。
また GitHubでは Conkyをインストールした時 /etc/conky/ に作成される設定ファイル conky.conf が公開されています。
Conkyをバージョンアップしたくない時は
Conkyを旧バージョンに固定したい時は端末から次のコマンドを実行しておきます。
$ sudo apt-mark hold conky-all
なおこの設定を解除してバージョンアップさせたいときは
$ sudo apt-mark unhold conky-all
を実行すれば OKです。
ASUSマザーボードについて|2023年5月追記
ASUSマザーボードの PCで lm-sensorsインストール後に sensors-detect、sensorsコマンドを実行すると CPU以外の情報が拾えません。原因は OS起動の際、nct6775モジュールがロードされていないためです。
この nct6775モジュールをロードするためには手動による設定が必要です。
sensors-detectの結果の最後の 3~4行目あたりにカーネルモジュールをロードするコマンドの記述があるのでそれを実行します。
$ sudo /etc/init.d/kmod start
モジュールがロードされていれば次のように表示されますが、そうでなければ何も表示されません。
$ lsmod |grep nct6775
terminal:結果(M/B B460M-K)
nct6775 28672 0
nct6775_core 94208 1 nct6775
hwmon_vid 16384 1 nct6775
wmi 32768 5 nct6775,asus_wmi,wmi_bmof,mfd_aaeon,mxm_wmi
これは ASUS B460M-K の結果です。
通常はこれと /etc/modules ファイルに nct6775 の記述があれば OS起動時に自動的にロードされるのですが、ASUSマザーボードではロードされません。ブートローダーGRUBの設定ファイルを開いて、
$ sudo nano /etc/default/grub
既存のコードをコメントアウト(#)して下記のコードを記述します。
terminal:/etc/default/grub #GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" GRUB_CMDLINE_LINUX_DEFAULT="quiet splashacpi_enforce_resources=lax"
Ctrl + X キーを押し、Y キーを押すと編集内容が保存され nanoエディタが閉じます。
grub.cfgにアップデートします。
$ sudo update-grub
PC再起動します。これで OS起動時に自動的にロードされます。
acpi_enforce_resources=lax については当ページ目次のサイト内リンク項目、上から3つ目と4つ目に掲載しています。