Linuxのハードウェア状況コマンドが覚えられずGUIアプリ作った話
0.初めに
私は、非エンジニアのドシロウトです。しかも記憶力が弱いです。
3か月前からASUS X205TAにLinux Mint XFCE 64bitを使っていますが、ハードウェア状況を確認するコマンドが、なかなか覚えられません。
具体的には、以下のコマンド達です。
- CPU使用率 mpstat -P ALL
- CPU等温度 sensors
- メモリ使用状況 free -h
- ディスク使用率 df -h
- バッテリー情報 upower -i /org/freedesktop/UPower/devices/battery_BATC
- CPU属性 lscpu
月に1回くらいしか使わないコマンドが多く、全然覚えられず、一々ググって非効率です。
そこでGUIのアプリみたいのをLinux Mintのデスクトップから起動できないか調べ始めました。
1.見つけた記事
この記事がともかく参考…というか丸パクリ…汗…で、すごく役立ちました。ありがとうございます。
記事の説明内容の通り、Eelというライブラリを使っています。
記事に従い、以下のディレクトリ構成で作ってます。
/home/xxx/eel/eel_sysinfo/
│ app.py
└─web
├─css
│ index.css
├─html
│ index.html
├─image
│ sysinfo.png
└─js
index.js
2.プログラム
パクって作ったので、あまり説明することがありませんが、一応貼っておきます。
-
app.py
OSコマンドを使う為、subprocessを使っています。
import eel
import time
from time import ctime
from datetime import datetime
import subprocess
from subprocess import PIPE
# expose to javascript
@eel.expose
def ask_python_from_js_get_sysinfo():
allres = "<pre>";
try:
proc = subprocess.run("date", shell=True, stdout=PIPE, stderr=PIPE, text=True)
date = proc.stdout
allres += 'DATE: {}'.format(date)+"\n\n"
proc = subprocess.run("mpstat -P ALL", shell=True, stdout=PIPE, stderr=PIPE, text=True)
cpu = proc.stdout
allres += "\nCPU使用率\n"+cpu+"\n"
proc = subprocess.run("sensors", shell=True, stdout=PIPE, stderr=PIPE, text=True)
cputemp = proc.stdout
allres += "\nCPU等温度\n"+cputemp+"\n"
proc = subprocess.run("free -h", shell=True, stdout=PIPE, stderr=PIPE, text=True)
memory = proc.stdout
allres += "\nメモリ使用状況\n"+memory+"\n"
proc = subprocess.run("df -h --total", shell=True, stdout=PIPE, stderr=PIPE, text=True)
disk = proc.stdout
allres += "\nディスク使用率\n"+disk+"\n"
proc = subprocess.run("upower -i /org/freedesktop/UPower/devices/battery_BATC", shell=True, stdout=PIPE, stderr=PIPE, text=True)
battery = proc.stdout
allres += "\nバッテリー情報\n"+battery+"\n"
proc = subprocess.run("lscpu", shell=True, stdout=PIPE, stderr=PIPE, text=True)
cpuinfo = proc.stdout
allres += "\nCPU属性\n"+cpuinfo+"\n"
except:
allres += "/nError./n"
finally:
# return
# call javascript function
allres += "</pre>"
eel.run_js_from_python_sysinfo(allres)
# initialize the folder which contents html,js,css,etc
eel.init("web")
# start app
eel.start("html/index.html")
- index.css
pre {
font-size: 22px;
}
- index.html
ハードウェア状況を30秒ごとに取得するようにしています。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="../css/index.css">
<script type="text/javascript" src="/eel.js"></script>
<script src="../js/index.js"></script>
<title>稼働情報一覧</title>
</head>
<body>
<img src="../image/sysinfo.png">
<div class="box">
<div id="sysinfo">
</div>
</div>
<script>
window.onload = function() {
getsysinfo();
setInterval(getsysinfo, 30000);
};
</script>
</body>
</html>
- index.js
// this function is called when button is clicked
function getsysinfo() {
console.log('getsysinfo');
// call python function
eel.ask_python_from_js_get_sysinfo();
}
// this function will be executed from python
// msg is the argument received from python side
// it will show the message received to user
eel.expose(run_js_from_python_sysinfo);
function run_js_from_python_sysinfo(msg) {
console.log('from python sysinfo');
document.getElementById("sysinfo").innerHTML = msg;
}
3.デスクトップアイコン
せっかくGUIアプリを作ったのでターミナルからではなく、デスクトップアイコンから起動したいと思いました。
あまり参考になる記事が無かったので、他のアプリのデスクトップアイコンを調べて確認。
ほかのディストリビューションではどうか知りませんが、Linux Mint 20 Xfceでは以下のようなファイルを作り、デスクトップに置くと起動アイコンとして使えました。
[Desktop Entry]
Version=1.0
Name=S-INFO
Comment=System information
Exec=/usr/bin/python3 /home/xxx/eel/eel_sysinfo/app.py
Path=/home/xxx/eel/eel_sysinfo/
Icon=/home/xxx/eel/eel_sysinfo/web/image/sysinfo.png
Terminal=false
Type=Application
Categories=Utility;Application;
4.終わりに
一応動作テストの動画です。
以 上
Author And Source
この問題について(Linuxのハードウェア状況コマンドが覚えられずGUIアプリ作った話), 我々は、より多くの情報をここで見つけました https://qiita.com/basictomonokai/items/a8a29d2398f6723bc6c7著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .