-
Notifications
You must be signed in to change notification settings - Fork 38
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
f61189e
commit b2777d4
Showing
1 changed file
with
100 additions
and
0 deletions.
There are no files selected for viewing
100 changes: 100 additions & 0 deletions
100
dotfiles/dot_shell/scripts/executable_debian-startup.sh.tmpl
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,100 @@ | ||
@@ -1,99 +0,0 @@ | ||
{{- if eq .chezmoi.os "linux" -}} | ||
#!/usr/bin/env bash | ||
|
||
# A script that would run with terminal startup on debian machines | ||
# Displays resource usage, etc. | ||
# | ||
# apt install figlet lolcat | ||
# chmod +x deb-startup | ||
# mv dev-startup /etc/update-motd.d/50-sysinfo | ||
# truncate -s 0 /etc/motd && rm /etc/update-motd.d/10-uname | ||
|
||
### Hostname | ||
########################################################### | ||
if [ -x "$(command -v figlet)" ]; then | ||
if [ -x "$(command -v lolcat)" ]; then | ||
figlet "$(hostname)" | lolcat -f | ||
else | ||
figlet "$(hostname)" | ||
fi | ||
else | ||
echo "$(hostname)" | ||
fi | ||
|
||
### System info | ||
########################################################### | ||
IFS=" " read -r LOAD1 LOAD5 LOAD15 <<<"$(cat /proc/loadavg | awk '{ print $1,$2,$3 }')" | ||
# get free memory | ||
IFS=" " read -r USED AVAIL TOTAL <<<"$(free -htm | grep "Mem" | awk {'print $3,$7,$2'})" | ||
# get processes | ||
PROCESS=$(ps -eo user= | sort | uniq -c | awk '{ print $2 " " $1 }') | ||
PROCESS_ALL=$(echo "$PROCESS" | awk {'print $2'} | awk '{ SUM += $1} END { print SUM }') | ||
PROCESS_ROOT=$(echo "$PROCESS" | grep root | awk {'print $2'}) | ||
PROCESS_USER=$(echo "$PROCESS" | grep -v root | awk {'print $2'} | awk '{ SUM += $1} END { print SUM }') | ||
# get processors | ||
PROCESSOR_NAME=$(grep "model name" /proc/cpuinfo | cut -d ' ' -f3- | awk {'print $0'} | head -1) | ||
PROCESSOR_COUNT=$(grep -ioP 'processor\t:' /proc/cpuinfo | wc -l) | ||
|
||
W="\e[0;39m" | ||
G="\e[1;32m" | ||
|
||
temp="" | ||
if [ -x "$(command -v landscape-sysinfo)" ]; then | ||
temp=$(landscape-sysinfo --sysinfo-plugins Temperature | sed 's/ *$//g' | sed 's/Temperature: //g') | ||
fi | ||
|
||
echo -e " | ||
${W}system info: | ||
$W Distro : $W$(cat /etc/*release | grep "PRETTY_NAME" | cut -d "=" -f 2- | sed 's/"//g') | ||
$W Kernel : $W$(uname -sr) | ||
$W Uptime : $W$(uptime -p) | ||
$W Load : $G$LOAD1$W (1m), $G$LOAD5$W (5m), $G$LOAD15$W (15m) | ||
$W Processes :$W $G$PROCESS_ROOT$W (root), $G$PROCESS_USER$W (user), $G$PROCESS_ALL$W (total) | ||
$W CPU : $W$PROCESSOR_NAME ($G$PROCESSOR_COUNT$W vCPU) | ||
$W Memory : $G$USED$W used, $G$AVAIL$W avail, $G$TOTAL$W total$W" | ||
|
||
### Disk | ||
########################################################### | ||
|
||
# config | ||
max_usage=90 | ||
bar_width=50 | ||
# colors | ||
white="\e[39m" | ||
green="\e[1;32m" | ||
red="\e[1;31m" | ||
dim="\e[2m" | ||
undim="\e[0m" | ||
|
||
# disk usage: ignore zfs, squashfs & tmpfs | ||
mapfile -t dfs < <(df -H -x zfs -x squashfs -x tmpfs -x devtmpfs -x overlay --output=target,pcent,size | tail -n+2) | ||
printf "\ndisk usage:\n" | ||
|
||
for line in "${dfs[@]}"; do | ||
# get disk usage | ||
usage=$(echo "$line" | awk '{print $2}' | sed 's/%//') | ||
used_width=$(((usage * bar_width) / 100)) | ||
# color is green if usage < max_usage, else red | ||
if [ "${usage}" -ge "${max_usage}" ]; then | ||
color=$red | ||
else | ||
color=$green | ||
fi | ||
# print green/red bar until used_width | ||
bar="[${color}" | ||
for ((i = 0; i < used_width; i++)); do | ||
bar+="=" | ||
done | ||
# print dimmmed bar until end | ||
bar+="${white}${dim}" | ||
for ((i = used_width; i < bar_width; i++)); do | ||
bar+="=" | ||
done | ||
bar+="${undim}]" | ||
# print usage line & bar | ||
echo "${line}" | awk '{ printf("%-31s%+3s used out of %+4s\n", $1, $2, $3); }' | sed -e 's/^/ /' | ||
echo -e "${bar}" | sed -e 's/^/ /' | ||
done | ||
|
||
{{- end }} |