Möglicherweise finden Sie die folgenden drei Linux-/Unix-Shell-Skripte hilfreich.
- Prozesse entweder basierend auf %CPU- oder Speichernutzung anzeigen.
- Zeigen Sie an, welcher Benutzer die CPU am meisten nutzt.
- Speicherinformationen des Systems anzeigen – insgesamt, verwendet und frei.
1. Prozesse basierend auf %CPU- und Speichernutzung auflisten
Dieses Skript listet die Prozesse basierend auf der CPU- und Speichernutzung in % auf, ohne Argument (standardmäßig). Wenn Sie das Argument (cpu oder mem) angeben, listet es die Prozesse basierend auf der CPU- oder Speichernutzung auf.
$ cat processes.sh #! /bin/bash #List processes based on %cpu and memory usage echo "Start Time" `date` # By default, it display the list of processes based on the cpu and memory usage # if [ $# -eq 0 ] then echo "List of processes based on the %cpu Usage" ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu # sorted based on %cpu echo "List of processes based on the memory Usage" ps -e -orss=,args= | sort -b -k1,1n # sorted bases rss value # If arguements are given (mem/cpu) else case "$1" in mem) echo "List of processes based on the memory Usage" ps -e -orss=,args= | sort -b -k1,1n ;; cpu) echo "List of processes based on the %cpu Usage" ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu ;; *) echo "Invalid Argument Given \n" echo "Usage : $0 mem/cpu" exit 1 esac fi echo "End Time" `date` exit 0
Sie können das obige Skript wie unten gezeigt ausführen.
$ processes.sh $ processes.sh mem $ processes.sh cpu
2. Zeigt eingeloggte Benutzer an und wer einen hohen CPU-Prozentsatz verwendet
Dieses Skript zeigt nur wenige Informationen über die derzeit angemeldeten Benutzer und was sie tun.
$ cat loggedin.sh
#! /bin/bash
w > /tmp/a
echo "Total number of unique users logged in currently"
cat /tmp/a| sed '1,2d' | awk '{print $1}' | uniq | wc -l
echo ""
echo "List of unique users logged in currently"
cat /tmp/a | sed '1,2d'| awk '{print $1}' | uniq
echo ""
echo "The user who is using high %cpu"
cat /tmp/a | sed '1,2d' | awk '$7 > maxuid { maxuid=$7; maxline=$0 }; END { print maxuid, maxline }'
echo ""
echo "List of users logged in and what they are doing"
cat /tmp/a $ ./loggedin.sh Total number of unique users logged in currently 4 List of unique users logged in currently john david raj reshma The user who is using high %cpu 0.99s reshma pts/5 192.168.2.1 15:26 3:01 1.02s 0.99s custom-download.sh List of users logged in and what they are doing 15:53:55 up 230 days, 2:38, 7 users, load average: 0.19, 0.26, 0.24 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT john pts/1 192.168.2.9 14:25 1:28m 0.03s 0.03s -bash john pts/2 192.168.2.9 14:41 1:11m 0.03s 0.03s -bash raj pts/0 192.168.2.6 15:07 9:08 0.11s 0.02s -bash raj pts/3 192.168.2.6 15:19 29:29 0.02s 0.02s -bash john pts/4 192.168.2.91 15:25 13:47 0.22s 0.20s vim error_log reshma pts/5 192.168.2.1 15:26 3:01 1.02s 0.99s custom-download.sh
3. Gesamten, belegten und freien Speicher anzeigen
Das folgende Skript zeigt den gesamten, belegten und freien Speicherplatz an.
$ cat mem.sh
#! /bin/bash
# Total memory space details
echo "Memory Space Details"
free -t -m | grep "Total" | awk '{ print "Total Memory space : "$2 " MB";
print "Used Memory Space : "$3" MB";
print "Free Memory : "$4" MB";
}'
echo "Swap memory Details"
free -t -m | grep "Swap" | awk '{ print "Total Swap space : "$2 " MB";
print "Used Swap Space : "$3" MB";
print "Free Swap : "$4" MB";
}' $ ./mem.sh Memory Space Details Total Memory space : 4364 MB Used Memory Space : 451 MB Free Memory : 3912 MB Swap memory Details Total Swap space : 2421 MB Used Swap Space : 0 MB Free Swap : 2421 MB