aboutsummaryrefslogtreecommitdiff
path: root/segments/cpu.sh
blob: 637bcdadc5668141ca53a6254c80f558fd194872 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# Prints the CPU usage: user% sys% idle.

run_segment() {
	if shell_is_linux; then
		cpu_line=$(top -b -n 1 | grep "Cpu(s)" )
		cpu_user=$(echo "$cpu_line" | grep -Po "(\d+(.\d+)?)(?=%?\s?(us(er)?))")
		cpu_system=$(echo "$cpu_line" | grep -Po "(\d+(.\d+)?)(?=%?\s?(sys?))")
		cpu_idle=$(echo "$cpu_line" | grep -Po "(\d+(.\d+)?)(?=%?\s?(id(le)?))")
	elif shell_is_osx; then 
		cpus_line=$(top -e -l 1 | grep "CPU usage:" | sed 's/CPU usage: //')
		cpu_user=$(echo "$cpus_line" | awk '{print $1}'  | sed 's/%//' )
		cpu_system=$(echo "$cpus_line" | awk '{print $3}'| sed 's/%//' )
		cpu_idle=$(echo "$cpus_line" | awk '{print $5}'  | sed 's/%//' )
	fi

	if [ -n "$cpu_user" ] && [ -n "$cpu_system" ] && [ -n "$cpu_idle" ]; then
		echo "${cpu_user}, ${cpu_system}, ${cpu_idle}" | awk -F', ' '{printf("%5.1f,%5.1f,%5.1f",$1,$2,$3)}'
		return 0
	else
		return 1
	fi
}