Puede encontrar útiles los siguientes tres scripts de shell de Linux/Unix.
- Mostrar procesos basados en %CPU o uso de memoria.
- Muestre qué usuario está utilizando más la CPU.
- Muestra la información de la memoria del sistema:total, usada y libre.
1. Lista de procesos basados en %CPU y uso de memoria
Esta secuencia de comandos enumera los procesos en función del % de uso de CPU y memoria, sin argumento (de forma predeterminada). Si especifica el argumento (cpu o mem), enumera los procesos según el uso de CPU o uso de memoria.
$ 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
Puede ejecutar el script anterior como se muestra a continuación.
$ processes.sh $ processes.sh mem $ processes.sh cpu
2. Mostrar usuarios registrados y quién está usando un alto porcentaje de CPU
Este script muestra poca información sobre los usuarios conectados actualmente y lo que están haciendo.
$ 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. Mostrar memoria total, usada y libre
El siguiente script muestra el espacio de memoria total, usado y libre.
$ 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