Estudiando comandos por ssh ssh dgomez-m@localhost -p 4242 para conectarnos desde cualquier terminal a nuestra virtual machine Desde Powershell o Macos conseguimos conectarnos.
Estudiando el bash:
- comando uname te devuelve el sistema
- uname -a (--all) te devuelve sistema arquitectura tipo de so
- Aqui utilizaremos el comando grep para buscar dentro del archivo /proc/cpuinfo por "physical id" Esto nos devolvera la linea de physical id
- El problema es que habra tantas lineas iguales por numero de de nuclos por ejemplo en mi maquina virtual solo me devuelve una linea physical id = 0 en mi pc de casa 28 lineas physical id entonces necesitamos una forma de contarlas entonces usaremos el comando tuberia para que nos cuente el numero de lineas
Lo mismo pero en este caso contaremos las lineas proccesor grep processor /proc/cpuinfo | wc -l
- El comando free nos muestra informacion sobre la ram
- el total , usado , la memoria libre, etc
- para la informacion en megas necesitamos --mega ya que -m son mebibytes y a nadie le importa ese formato
- El comando Awk
- Es una herramienta potente para procesar textos , en el contexto que estamos usando es por que queremos sacar cierta informacion de free --mega si uamos el operador tuberia despues del free podemos acceder a cada linea y recuperar cosas
dgomez-m@dgomez-m42:~$ free
total used free shared buff/cache available
Mem: 2014520 221808 1823196 596 90000 1792712
Swap: 2244604 0 2244604
free -- mega | awk '$s1 == "Mem:"' Busca la linea donde Ponga Mem
free --mega | awk '$1 == "Mem:"'
Mem: 2062 227 1866 0 92 1835
y si queremos recuperar un valor en concreto usamos free --mega | awk '$1 == "Mem:" {print $Numerodepalabra}' Donde numero de palabra sera el valor que querramos recuperar por ejemplp el total seria
dgomez-m@dgomez-m42:~$ free --mega | awk '$1 == "Mem:" {print $2}'
2062
Para la parte del porcentaje usaremos printf veamos este comando
dgomez-m@dgomez-m42:~$ free --mega | awk '$1 == "Mem:" {printf("(%d)\n", $3/$2*100)}'
(11)
Este printf nos muestra en entero el porcentaje de memoria usada para hacer el calculo usamos la memoria usada entre el total por cien
Ahora bien si queremos hacer lo que nos piden con dos decimales y % al final tenemos que trabajarlo un poquito mas
free --mega | awk '$1 == "Mem:" {printf("(%f)\n", $3/$2*100)}'
(11.008729)
con %f de float nos imprime todos los decimales pero como solo queremos 2 solo haria falta modificarlo %.2f y como queremos el porcentaje delante y ya lo tenemos controlado del printf el comando final seria asi
free --mega | awk '$1 == "Mem:" {printf("(%.2f%%)\n", $3/$2*100)}'
(10.96%)
Para ver el estado de memoria del disco usamos el comando df
Para que nos muestre solo las lineas que queremos /dev/ y nos excluya las lineas que contengan /boot usamos grep para filtrar lo que queremos y grep -v para que no nos incluya esas lineas
df -m | grep "/dev/" | grep -v "/boot"
ademas vamos a usar el comando awk para quie nos sume todo el espacio usado por estas carpetas
df -m | grep "/dev/" | grep -v "/boot" | awk '{memory_use += $3} END {print memory_use}'
Una vez obtenido el espacio usado necesitamos el espacio total , que es un comando muy parecido
df -m | grep "/dev/" | grep -v "/boot" | awk '{memory_result += $2} END {printf ("%.0fGb\n"), memory_result/1024}'
aqui le estamos diciendo que nos sume los valores en s2 y que nos haga un printf de los valores sumados dividido entre 1024 para obtenerlo en GB
Tambien debe salir el porcentaje de la memoria usada
para ello sumaremos todos los valores de memororia usada y los guradaremos en use sumaremos toda la memoria total y la guardaremos en total al final imprimiremos el use entre el total multiplicado por 100 para obtener el porcentaje.
usando en el printf %d para quitarnos los decimales .
df -m | grep "/dev/" | grep -v "/boot" | awk '{use += $3} {total += $2} END {printf("(%d%%)\n"), use/total*100}'
- R : nos muestra el numero de procesos en ejecucion
- b : procesos en espera
- swpd : la cantidad de memoria virtual utilizada
- free : la cantiddad de memoria fisica disponible
- buff : la cantidad de memoria utilizada como memoria intermedia del sistema
- cache : la memoria cache utilizada por el sistema
- si : la cantidad de memoria intercambiada desde el disco al espacio de swap por segundo
- so : la cantidad de memoria intercambiada desde swap al disco por segundo
- bi: la cantidad de bloques leidos desde dispositivos por segundo
- bo: la cantidad de bloques escritos en dispositivos por segundo
- in : cantidad de interrupciones por segundo
- cs : cantidad de cambios de contexto por segundo
-
us : porcentaje de tiempo utilizado en procesos de usuario
-
sy : porcentaje de tiempo utilizado en procesos del sistema
-
id: porcentaje de tiempo de cpu inactiva
-
wa: porcentaje de tiempo esperando entrada y salida
-
st : indica el procentaje de tiempo de cpu robado por maquinas virtuales.
-- Un valor alto en la columna "st" podría indicar que las máquinas virtuales en tu sistema no están obteniendo suficiente tiempo de CPU y están siendo limitadas por el hipervisor. En entornos de virtualización, es importante monitorear esta métrica para asegurarse de que las máquinas virtuales obtengan suficientes recursos para realizar sus tareas de manera eficiente.
Ahora bien para lo que nos pide el subject que es el % de cpu
primero necesitamos solo obtener la ultima linea
para esto usaremos un comando tuberia
vmstat | tail -1
como solo queremos el valor 15 hacemos por tuberia
vmstat | tail -1 | awk '{print $15}'
comando who -b
nos muestra mas de lo que queremos como solo queremos la fecha tenemos que hacer un awk
who -b | awk '$1 == "system" {print $3 " " $4}'
En el subject nos piden que pongamos yes or no dependiendo de si lvm esta activo para ello vamos a seguir usando los comandos aprendidos hasta ahora.
comando lsblk
Nos muestra una lista jerarquica de discos duros particiones tamaño y puntos de montaje
como queremos saber si hay lvm
lsblk | grep "lvm" | wc -l esto nos vas a contar el numero de lineas al buscar con grep lvm
ahora necesitamos que nos ponga yes or no dependiendo de si encuentra lineas con el grep
if [ $(lsblk | grep "lvm" | wc -l) -gt 0 ]; then echo yes; else echo no; fi
Metemos dentro del if entre corchetes el comando anterior y le metemos - gt 0
para validar que haya mas lineas que 0
dependiendo de el resultado de la validacion nos hace un echo , y para terminar el if debemos poner fi
Para mirar el numero de conexiones TCP establecidadas usaremos:
ss -ta | grep ESTAB | wc -l
Esto nos contara el numero de lineas ESTAB lo que nos devolvera el numero de conexiones
users | wc -w
comandos hostname -I (devuelve ip) ip link( devuelve mucho texto y la mac addres) Para dejarlo bonito debemos hacer un grep de "link/ether" pasarselo por pipe a awk e imprimir solamente la segunda palabra
journalctl _COMM=sudo | grep COMMAND | wc -l)