次の 3 つの Linux / Unix シェル スクリプトが役立つ場合があります。
- CPU 使用率またはメモリ使用率に基づいてプロセスを表示します。
- CPU を最も多く使用しているユーザーを表示します。
- システムのメモリ情報 (合計、使用済み、空き) を表示します。
1. CPU とメモリの使用率に基づいてプロセスを一覧表示
このスクリプトは、%CPU およびメモリ使用量に基づいてプロセスを一覧表示します。引数はありません (デフォルト)。引数 (cpu または mem) を指定すると、CPU 使用率またはメモリ使用量に基づいてプロセスが一覧表示されます。
$ 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
以下に示すように、上記のスクリプトを実行できます。
$ processes.sh $ processes.sh mem $ processes.sh cpu
2.ログインしているユーザーと CPU 使用率が高いユーザーを表示
このスクリプトは、現在ログインしているユーザーとそのユーザーが何をしているかに関する情報をほとんど表示しません。
$ 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.合計、使用済み、空きメモリを表示
次のスクリプトは、合計、使用済み、および空きメモリ容量を表示します。
$ 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