Mungkin kalian bertanya kenapa MajestyTech Workshop sering menulis artikel seputar Opensuse? Kenapa tidak mencoba distro lain? Alasannya sederhana. Karena Opensuse adalah distro dari sistem operasi Linux yang jarang sekali orang tertarik. Orang lebih sering menggunakan distro turunan Debian seperti salah satunya yang terkenal adalah Ubuntu. Sedangkan Opensuse orang seperti memilih menghindar karena (mungkin) susah, komunitasnya dianggap kecil (padahal nggak), atau jarang tutorial yang dibuat (ini sepertinya karena kebanyakan bahasa asing ya forum-forumnya, macem Rusia, Jerman, dsb). Sehingga dari alasan tersebut, MajestyTech Workshop mencoba untuk menembus batas dan menyingkirkan anggapan-anggapan miring dari orang-orang.
Install Paket "sensord"
Atau kalian juga bisa memberikan perintah watch sensors untuk memonitor segala sensor yang ada pada PC/Laptop kalian. Tentunya yang juga didukung oleh kernel yang kalian gunakan. Tampilan yang diberikan kurang lebih sama dengan tampilan pertama. Hanya saja ini digunakan jika kalian ingin melihat atau memonitor secara live. Data yang ditampilkan di update selama 2 detik sekali.
Membuat program utama
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | #!/bin/bash # Log temperature over some time interval given as days, hours, minutes or seconds. # enter the variables according to your usage in the following seciton : duration=3d12h #duration format is ndnhnmns where n is some number and d is day, # h is hours, m is minutes and s is seconds. For example, 4d , 4d5h30m , 5m30s, 6h30m30s are all valid. step=3 #---------------------------------------------------------------------- #starting time taken as current dt=$(date '+%Y-%m-%dT%H:%M:%S'); #et=$(date '+%Y-%m-%dT%H:%M:%S'); touch temp.txt fullname=$(date +"%d-%m-%Y_%H%M%S"); #---------------------------------------------------------------------- a=$(dadd $dt $duration ) b=$(ddiff $dt $a -f '%S') echo $a $b ntimes=$((b/step)) echo $ntimes echo "logging..."; nms=0 while [ $nms -lt $ntimes ]; do sensors | grep -A 0 'Core' | cut -c10-20 |tr "\n" "\t" >> temp.txt let nms=nms+1 sleep $step now=$(date +"%m/%d/%Y %T") # echo $now echo -e "$(cat temp.txt)""\t$now" >> $fullname.txt rm temp.txt done #plotting using gnuplot to get a beautiful plot. day=86400 #different x-axis for different time duration. A day = 86400 seconds fcode=$(date "+%Y-%m-%d_%H%M%S") # generate a time stamp #echo $fcode if [[ "$b" > "$day" ]] then gnuplot -e "filename='temp_plot_$fcode'" plot_day else gnuplot -e "filename='temp_plot_$fcode'" plot_time fi #end-of-script--------------------------------------------------------- |
Jalankan Otomatis
1 2 3 4 5 6 7 8 9 10 11 12 | # /etc/systemd/system/temperature-log.service # [Unit] Description=Temperature Log Sensors [Service] Type=oneshot ExecStart=/bin/sh "/usr/sbin/tlog_script.sh" [Install] WantedBy=multi-user.target |
Agar skrip tadi dapat segera dijalankan dan juga berjalan otomatis disaat booting, lakukan daemon-reload terlebih dahulu baru setelah itu kalian start service-nya.
systemctl daemon-reload
systemctl start temperature-log.service
Pastikan ketika dua perintah di atas diberikan, tidak ada pesan error atau pesan-pesan aneh muncul. Untuk memastikan kalian bisa cek dengan perintah:
systemctl status temperature-log.service
Dan muncul tampilan seperti ini:
systemctl enable temperature-log.service
Selesai. Kalian bisa coba restart laptop/PC kalian untuk lebih memastikan skrip sudah benar-benar running atau tidak. Harusnya jika tidak ada masalah ketika dicek tadi, maka skrip otomatis running ketika di awal boot atau saat kalian pertama menyalakan laptop/PC. File log tadi disimpan di direktori / . Kalian tinggal ketikkan di terminal cd / maka disitu ada file log temperatur seperti pada gambar paling awal di artikel ini.
GNU Plot
Kalian hanya perlu memasang/install paket gnuplot lalu membuat dua skrip lagi misal plot_day dan plot_time tanpa format apapun. Kemudian kalian simpan dua skrip tersebut satu direktori dengan skrip utama. Data temperatur terekstrasi menjadi gambar grafik secara otomatis. Skrip konfigurasi terdapat pada skrip utama di baris 37-46. Dan tambahan dua skrip adalah seperti ini:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | set terminal pngcairo size 1200,600 enhanced font 'Verdana' set output sprintf('%s.png', filename) set timefmt '%d/%m/%Y %H:%M:%S' set xdata time set format x '%m/%d' set grid ytics lc rgb "#bbbbbb" lw 2 lt 1 set yr [20:100] set title "Temperature log" set xlabel "Date (month:day)" set ylabel "degree Celcius" plot "t_log.txt" using 7:1 with lines title "core:1" linewidth 3,\ "t_log.txt" using 7:2 with lines title "core:2" linewidth 3 ,\ "t_log.txt" using 7:3 with lines title "core:3" linewidth 3 ,\ "t_log.txt" using 7:4 with lines title "core:4" linewidth 3 ,\ "t_log.txt" using 7:5 with lines title "core:5" linewidth 3 ,\ "t_log.txt" using 7:6 with lines title "core:6" linewidth 3 replot |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | set terminal pngcairo size 1200,600 enhanced font 'Verdana' set output sprintf('%s.png', filename) set timefmt '%d/%m/%Y %H:%M:%S' set xdata time set format x '%H:%M:%S' set grid ytics lc rgb "#bbbbbb" lw 2 lt 1 set yr [20:100] set title "Temperature log" set xlabel "Time (Hour:Minute:Second) " set ylabel "degree Celcius" plot "t_log.txt" using 7:1 with lines title "core:1" linewidth 3,\ "t_log.txt" using 7:2 with lines title "core:2" linewidth 3 ,\ "t_log.txt" using 7:3 with lines title "core:3" linewidth 3 ,\ "t_log.txt" using 7:4 with lines title "core:4" linewidth 3 ,\ "t_log.txt" using 7:5 with lines title "core:5" linewidth 3 ,\ "t_log.txt" using 7:6 with lines title "core:6" linewidth 3 replot |
Tidak banyak yang perlu diubah pada dua skrip ini. Kalian tinggal memerhatikan "t_log.txt", ubah dengan nama file log temperatur yang dihasilkan dari skrip utama. Kemudian kalian perhatikan juga tulisan "core:1" dst. sesuaikan dengan jumlah core CPU pada laptop/PC kalian. Jika hanya terdapat 4 core maka hapus baris 16-17 pada plot_day, dan baris 15-16 pada plot_time. Maka selesai sudah artikel ini.
Apabila kalian ada pertanyaan atau ada yang belum mengerti, tinggalkan komentar di artikel ini, atau kalian bisa kirim email maupun kontak Telegram MajestyTech Workshop. Terima kasih.
Referensi:
https://stackoverflow.com/questions/9725897/bash-script-use-cut-command-at-variable-and-store-result-at-another-variable
https://www.geeksforgeeks.org/cut-command-linux-examples/
https://www.redhat.com/sysadmin/exit-codes-demystified
https://askubuntu.com/questions/96957/where-can-i-find-the-log-file-of-my-system-temperature
https://reposcope.com/package/dateutils
https://forums.opensuse.org/showthread.php/534591-how-to-start-bash-script-application-on-boot-in-Opensuse-Leap-15
https://forums.opensuse.org/showthread.php/526253-Setting-up-cron-to-do-work
https://unix.stackexchange.com/questions/269858/does-linux-typically-log-system-temperature-data
https://www.suse.com/support/kb/doc/?id=000019672
https://gutherzig.wordpress.com/2011/10/24/tanggal-linux-sebagai-nama-file/
https://unix.stackexchange.com/questions/278939/how-do-you-put-date-and-time-in-a-file-name
0 Komentar