GNU/Linux >> Tutoriales Linux >  >> Linux

3 scripts de Unix Shell:actividad del usuario, ver procesos, mostrar memoria

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

Linux
  1. ¿Matrices asociativas en scripts de Shell?

  2. TMOUT:sale automáticamente de Unix Shell cuando no hay actividad

  3. ¿Qué es el comando * nix para ver el shell de inicio de sesión predeterminado de un usuario?

  4. Clasificación de procesos por uso de memoria

  5. Ejecutar un comando como usuario nologin

¿Permitir Setuid en scripts de Shell?

Matrices en Unix Bourne Shell?

Matrices en scripts de Shell

¿Cómo usar if-else en Shell Scripts?

El bucle while en los scripts de Shell

Ejecute un script de shell como un usuario diferente