GNU/Linux >> Linux の 問題 >  >> Linux

3 つの Unix シェル スクリプト – ユーザー アクティビティ、プロセスの表示、メモリの表示

次の 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

Linux
  1. TMOUT – アクティビティがない場合に Unix シェルを自動的に終了する

  2. ユーザーのデフォルトのログイン シェルを表示する *nix コマンドは何ですか

  3. vi アクティビティをログに記録できますか?

  1. Unix Bourne Shellの配列?

  2. メモリ使用量によるプロセスの並べ替え

  3. 別のユーザーとしてシェル スクリプトを実行する

  1. シェルスクリプトでSetuidを許可しますか?

  2. シェルスクリプトでルート権限を削除する方法は?

  3. Unixシェルスクリプトのファイル拡張子?