GNU/Linux >> LINUX-Kenntnisse >  >> Linux

3 Unix-Shell-Skripte – Benutzeraktivität, Prozesse anzeigen, Speicher anzeigen

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

Linux
  1. Assoziative Arrays in Shell-Skripten?

  2. Richtiges Sperren in Shell-Skripten?

  3. Arrays in der Unix-Bourne-Shell?

  4. Wie lösche ich Root-Rechte in Shell-Skripten?

  5. Dateierweiterungen für Unix-Shell-Skripte?

Arrays in Shell-Skripten

Wie verwende ich if-else in Shell-Skripten?

Die While-Schleife in Shell-Skripten

Was ist der *nix-Befehl, um die Standard-Login-Shell eines Benutzers anzuzeigen

Kann ich vi-Aktivitäten protokollieren?

Ausführen eines Befehls als nologin-Benutzer