sysinfo
falls eine HDD oder SSD eingebaut ist, das Programm hddtemp und netcat installieren
ansonsten geht es beim Shell-Skript weiter
pacman -S hddtemp gnu-netcat
emerge -av hddtemp gnu-netcat
hddtemp starten und beim nächsten Systemstart aktivieren
systemctl start hddtemp && systemctl enable hddtemp
rc-update add hddtemp default
das Shell-Script sysinfo erstellen
nano /usr/local/bin/sysinfo.sh
/usr/local/bin/sysinfo.sh
#!/bin/bash
echo ""
echo "Linux: `uname -r`"
echo "Uptime: $(uptime | sed 's/.*up \([^,]*\), .*/\1/') "
#RAM Usage
echo -n "RAM Usage: "
MEMUSED=$(free | sed -n 2p | awk '{print $(NF-4)}')
MEMTOTAL=$(free | sed -n 2p | awk '{print $(NF-5)}')
echo "$((MEMUSED/1024))MB / $((MEMTOTAL/1024))MB"
# CPU Clock
echo -n "CPU Clock: "
if [ -r /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq ]; then
(( CLOCK=$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq)/1000 ))
CPUGOVERNOR=$(cat /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor)
echo "${CLOCK}MHz ($CPUGOVERNOR)"
else
echo "Clockspeed not available"
fi
#CPU Usage
PREV_TOTAL=0
PREV_IDLE=0
i=0
while [ $i -le 1 ]; do
# Get the total CPU statistics, discarding the 'cpu ' prefix.
CPU=(`sed -n 's/^cpu\s//p' /proc/stat`)
IDLE=${CPU[3]} # Just the idle CPU time.
# Calculate the total CPU time.
TOTAL=0
for VALUE in "${CPU[@]}"; do
let "TOTAL=$TOTAL+$VALUE"
done
# Calculate the CPU usage since we last checked.
let "DIFF_IDLE=$IDLE-$PREV_IDLE"
let "DIFF_TOTAL=$TOTAL-$PREV_TOTAL"
let "DIFF_USAGE=(1000*($DIFF_TOTAL-$DIFF_IDLE)/$DIFF_TOTAL+5)/10"
# Remember the total and idle CPU times for the next check.
PREV_TOTAL="$TOTAL"
PREV_IDLE="$IDLE"
# Wait before checking again.
sleep 1
i=$(( $i + 1 ))
done
echo -en "CPU Usage: $DIFF_USAGE%\n"
#CPU Frequency
echo ""
totaltime=`awk '{SUM += $2} END {printf("%.0f",SUM/1000)}' /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state`
echo -e "FREQUENCY\tUSED"
SUM=0
awk '
{
printf (($1/1000)" MHz \t");
if ($2 == 0)
{
printf "0 %\n";
}
else {
SUM+=$2;
printf("%.1f%\n",($2/10)/"'"$totaltime"'");
}
}
END{
# printf ("Time spent in idle mode is %2.2f %\n",(1-((SUM/1000)/"'"$totaltime"'"))*100);
}' /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state
echo ""
echo "Top five processes:"
ps -Ao user,uid,comm,pid,pcpu --sort=-pcpu | head -n 6
echo ""
echo "MMC/SD"
if [ -r /dev/mmcblk0 ]; then
for DEVICE in /dev/mmcblk[0-9]p[0-9]; do
MOUNT=$(mount | grep ${DEVICE})
echo " "$MOUNT
done
else
echo " not available"
fi
echo "HDD/SSD"
for DEVICE in /dev/sd[a-y]; do
if [ -c $DEVICE ]; then
if [ ! -f /usr/sbin/hddtemp ]; then
echo " $DEVICE: package hddtemp is not available"
else
HDDTEMP=$(nc localhost 7634 | awk -F'|' '{print $3 " " $4}')
echo " $DEVICE: ${HDDTEMP}"°C
fi
if [ -e "${DEVICE}1" ]; then
for PARTITION in $DEVICE[1-99]; do
PARTTOTAL=$(df -h | grep $PARTITION | awk '{print $(NF-4)}')
PARTUSED=$(df -h | grep $PARTITION | awk '{print $(NF-3)}')
PARTMOUNT=$(df -h | grep $PARTITION | awk '{print $(NF-0)}')
echo " $PARTITION: ${PARTUSED}B of ${PARTTOTAL}B used and mounted in $PARTMOUNT"
done
fi
fi
done
sysinfo.sh ausführbar machen
chmod +x /usr/local/bin/sysinfo.sh