0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

この記事について

CPU使用率をログに保存するshellscriptの自分用テンプレです。忘れた頃に必要になるので備忘録に残しておきます。たまにこういうやつ↓を出力したくなりますよね。

csv出力

項目は任意で、その時に必要なものを出力します。手元に残るscriptをテンプレ代わりに置きます。

chk_cpu_csv.sh
#!/bin/bash

# CSVファイル名を設定
datetime=$(date '+%Y%m%d-%H%M%S')
csv_file="cpu_info_${datetime}.log"

# CSVファイルのヘッダーを設定
header="timestamp,main_display,Xwayland,pipewire-pulse,pipewire,wayfire,suricata,NM,wf-panel-pi"
echo $header > $csv_file

# 最新のログを取得しcsvに書き出す関数
get_cpu_info() {
    timestamp=$(date '+%Y-%m-%d %H:%M:%S')
    main_display_usage=$(top -bn1 | grep "python3" | sort -rk9  | head -n 1 | awk '{print $9}')
    Xwayland_usage=$(top -bn1 | grep "Xwayland" | sort -rk9  | head -n 1 | awk '{print $9}')
    pipewire_pulse_usage=$(top -bn1 | grep "pipewir+" | sort -rk9  | head -n 1 | awk '{print $9}')
    pipewire_usage=$(top -bn1 | grep "pipewire" | sort -rk9  | head -n 1 | awk '{print $9}')
    wayfire_usage=$(top -bn1 | grep "wayfire" | sort -rk9  | head -n 1 | awk '{print $9}')
    suricata_usage=$(top -bn1 | grep "Suricat+" | sort -rk9 | head -n 1 | awk '{print $9}')
    nm_usage=$(top -bn1 | grep "Network+" | sort -rk9  | head -n 1 | awk '{print $9}')
    wf_panel_pi_usage=$(top -bn1 | grep "wf-pane+" | sort -rk9  | head -n 1 | awk '{print $9}')

    echo "${timestamp},${main_display_usage},${Xwayland_usage},${pipewire_pulse_usage},${pipewire_usage},${wayfire_usage},${suricata_usage},${nm_usage},${wf_panel_pi_usage}"
}

while true; do
    payload=$(get_cpu_info)
    echo $payload >> $csv_file

    sleep 10
done

こんな感じに出力されます。

json出力

同じ内容をjsonで出力させます。なぜjsonかと言えばこれですよね。

chk_cpu_json.sh
#!/bin/bash

# 最新のログを取得しPublishする関数
get_cpu_info() {
    timestamp=$(date +%s)
    main_display_usage=$(top -bn1 | grep "python3" | sort -rk9  | head -n 1 | awk '{print $9}')
    Xwayland_usage=$(top -bn1 | grep "Xwayland" | sort -rk9  | head -n 1 | awk '{print $9}')
    pipewire_pulse_usage=$(top -bn1 | grep "pipewir+" | sort -rk9  | head -n 1 | awk '{print $9}')
    pipewire_usage=$(top -bn1 | grep "pipewire" | sort -rk9  | head -n 1 | awk '{print $9}')
    wayfire_usage=$(top -bn1 | grep "wayfire" | sort -rk9  | head -n 1 | awk '{print $9}')
    suricata_usage=$(top -bn1 | grep "Suricat+" | sort -rk9 | head -n 1 | awk '{print $9}')
    nm_usage=$(top -bn1 | grep "Network+" | sort -rk9  | head -n 1 | awk '{print $9}')
    wf_panel_pi_usage=$(top -bn1 | grep "wf-pane+" | sort -rk9  | head -n 1 | awk '{print $9}')

    echo "{\"Timestamp\":\"$timestamp\",\"main_display\":\"$main_display_usage\",\"Xwayland\":\"$Xwayland_usage\",\"pipewire_pulse\":\"$pipewire_pulse_usage\",\"pipewire\":\"$pipewire_usage\",\"wayfire\":\"$wayfire_usage\",\"suricata\":\"$suricata_usage\",\"nm\":\"$nm_usage\",\"wf_panel_pi\":\"$wf_panel_pi_usage\"}"
}


while true; do

    payload=$(get_cpu_info)
    echo $payload
    topic=${THING_NAME}_mos/${THING_NAME}_logs/cpu-info
    echo $topic

    mosquitto_pub -h 127.0.0.1 -t "$topic" -m "$payload"

    sleep 10
done

DEMOとしてlocalhostでpubsubさせました。

pub
~ $ ./chk_cpu_json.sh
{"Timestamp":"1720440267","main_display":"68.8","Xwayland":"12.5","pipewire_pulse":"0.0","pipewire":"0.0","wayfire":"6.2","suricata":"","nm":"0.0","wf_panel_pi":"0.0"}
VNCcamServer1_mos/VNCcamServer1_logs/cpu-info
{"Timestamp":"1720440279","main_display":"64.7","Xwayland":"18.8","pipewire_pulse":"0.0","pipewire":"0.0","wayfire":"6.2","suricata":"","nm":"0.0","wf_panel_pi":"0.0"}
VNCcamServer1_mos/VNCcamServer1_logs/cpu-info
{"Timestamp":"1720440290","main_display":"64.7","Xwayland":"12.5","pipewire_pulse":"0.0","pipewire":"0.0","wayfire":"6.2","suricata":"","nm":"0.0","wf_panel_pi":"0.0"}
VNCcamServer1_mos/VNCcamServer1_logs/cpu-info
sub
~ $ mosquitto_sub -h 127.0.0.1 -t "VNCcamServer1_mos/VNCcamServer1_logs/cpu-info" -v
VNCcamServer1_mos/VNCcamServer1_logs/cpu-info {"Timestamp":"1720440267","main_display":"68.8","Xwayland":"12.5","pipewire_pulse":"0.0","pipewire":"0.0","wayfire":"6.2","suricata":"","nm":"0.0","wf_panel_pi":"0.0"}
VNCcamServer1_mos/VNCcamServer1_logs/cpu-info {"Timestamp":"1720440279","main_display":"64.7","Xwayland":"18.8","pipewire_pulse":"0.0","pipewire":"0.0","wayfire":"6.2","suricata":"","nm":"0.0","wf_panel_pi":"0.0"}
VNCcamServer1_mos/VNCcamServer1_logs/cpu-info {"Timestamp":"1720440290","main_display":"64.7","Xwayland":"12.5","pipewire_pulse":"0.0","pipewire":"0.0","wayfire":"6.2","suricata":"","nm":"0.0","wf_panel_pi":"0.0"}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?