Bases del sistema operativo

1

Aviso de renovación del curso

2

Lo que aprenderás sobre la administración de servidores linux

3

Distribuciones más utilizadas de Linux

4

Instalación de Ubuntu Server

5

Instrucciones para instalar CentOS

6

Gestión del árbol de directorios

7

Diferencias entre LESS, CAT, HEAD y TAIL para lectura de archivos

8

Interacción con archivos y permisos

9

Conociendo las terminales en linux

10

Manejo y monitoreo de procesos y recursos del sistema

11

Monitoreo de recursos del sistema

Instalación y manejo de software en Linux

12

Análisis de los parámetros de red

13

Administración de paquetes acorde a la distribución

14

Manejo de paquetes en sistemas basados en Debian

15

Administración de software con YUM y RPM para CentOS

16

Nagios: Desempaquetado, descompresión, compilación e instalación de paquetes

Administración de usuarios

17

Los usuarios, una tarea vital en el proceso de administración del sistema operativo

18

Creando y manejando cuentas de usuario en el sistema operativo

19

Entendiendo la membresía de los grupos

20

Usando PAM para el control de acceso de usuarios

Servicios en el sistema operativo

21

Autenticación de clientes y servidores sobre SSH

22

Configurando DNS con bind

23

Arranque, detención y recarga de servicios

24

NGINX y Apache en Ubuntu server

25

Instalación y configuración de NGINX

26

¿Qué es NGINX Amplify?

27

NGINX Amplify: Instalación y configuración de un servidor para producción

28

Monitoreo de MySQL con Nagios

29

Configuración de Nagios

30

Los logs, nuestros mejores amigos

31

Otros servicios de logs

Bash scripting

32

Las bases de bash

33

Las variables y su entorno de ejecución

34

Automatizando tareas desde la terminal

35

Automatizando la copia de seguridad

36

Crontab

Asegurando tu servidor

37

Entendiendo la gestión de vulnerabilidades

38

¿Qué es una superficie de ataque? Principio del menor privilegio

39

El firewall y sus reglas

40

Escaneo de puertos con NMAP y NIKTO desde Kali Linux

41

Lynis: Herramientas de auditoria de seguridad en Linux

Proyecto

42

Configuración de Node.js en un ambiente productivo

43

Configuración de NGINX para la aplicación de Node.js

Bonus: Linux en Azure

44

Aprende sobre Linux en Azure

45

Despliegue de una aplicación web MEAN

46

Crea una máquina virtual en la nube de Azure

Conclusiones

47

Lo que aprendiste sobre servidores linux

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Manejo y monitoreo de procesos y recursos del sistema

10/47
Recursos

Para ver todos los procesos que corren en el sistema podemos usar el comando ps. Recuerda que puedes ver la documentación de este comando con el comando man ps.

El comando grep nos ayuda a filtrar el resultado de un comando o archivo dependiendo de las palabras de cada línea. Para esto también vamos a usar el pipe (|), un símbolo que nos ayuda a enviar el resultado de un comando a un segundo comando.

Por ejemplo, el comando ps aux | grep platzi imprime los procesos activos del sistema y, con ayuda del pipe, envía la lista al comando grep para filtrar el resultado, mostrando únicamente las líneas con la palabra platzi.

Aportes 114

Preguntas 15

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

RESUMEN DE LA CLASE
|
Manejo y monitoreo de procesos y recursos del sistema
|
|
Comandos
|
ps: Muestra los procesos corriendo. Modificadores:

  1. aux: Muestra todos los procesos

jobs: Al igual que el comando anterior, muestra los procesos. A diferencia de ps, es un comando interno de la terminal
fg: Abre un proceso que estaba pausado
nohup: Genera un archivo llamado “nohup.out” que muestra toda la información que produjo un proceso
grep: Nos ayuda a filtrar el resultado de un comando o el contenido de un archivo dependiendo de las palabras (o incluso expresión regular) que le indiquemos
|
|
Símbolos especiales
|
"|" Pipe: Envia el standard output de un comando al standard input de otro.
"&" Ampersand: Envia un proceso al background
"./": Ejecuta un archivo

Cuando entres a la consola vi, para iniciar a editar y/o insertar texto presionas “i”, para salir y grabar cuando termines “ctrl+c”, para guardar “:wq”

Mis apuntes de esta clase:

<h1>1.7 Manejo y monitoreo de procesos y recursos del sistema</h1>

Una de las funciones importantes de los administradores de sistemas es verificar que todos los procesos que se están ejecutando sean válidos y no sean procesos que esten haciendo cosas maliciosas.

Para ver los procesos que están corriendo en el SO:
ps aux
La información más importante que muestra este comando es que comando esta ejecuando el proceso.
Podemos buscar procesos por usuario usando el pipe y grep, ejemplo:
ps aux | greep platzi

Cuando trabajamos con algún editor de texto, a veces necesitamos enviar estos procesos a un segundo plano.

vi {nombre} ==> abre un archivo de texto con el nombre que especificamos.

Para volver a la consola presionamos: ctrl+z ==> pasamos los procesos a background.

Para ver los procesos que se están ejecutando ==> jobs

Para volver al proceso ==> fg … foreground.

Para salir de un vi ==> ctrl+c:wq

Iniciar un proceso sin que se pierda la consola:

  • ./script.sh ==> ejecuta el archivo y muestra el resultado.
  • ./script.sh & ==> ejecuta el archivo, muestra un proceso especifico y muestra el resultado.
  • nohup ./script.sh & ==> genera una salida con el nombre de nohup.out y en el enctramos toda la información de lo que realiza el proceso. Esto es muy útil cuando realizamos despliegues en servidores porque sabemos que esta realizando el proceso.

Pueden usar el comando: htop para obtener un administrador de procesos y recursos probado en (Ubuntu server 20.0 lts)

La informacion de lo que significa cada parametro al ejecutar el comando ps aux

USER: usuario con el que se ejecuta el proceso
PID: ID del proceso
%CPU: porcentaje de tiempo que el proceso estuvo en ejecución desde que se inició
%MEM: porcentaje de memoria física utilizada
VSZ: memoria virtual del proceso medida en KiB
RSS: “resident set size”, es la cantidad de memoria física no swappeada que la tarea a utilizado (en KiB)
TT: terminal que controla el proceso (tty)
STAT: código de estado del proceso (información detallada más adelante)
STARTED: fecha de inicio del proceso
TIME: tiempo de CPU acumulado
COMMAND: comando con todos sus argumentos

Cuando utilizamos ps con las opciones “aux” el resultado es:

a: eliminar la restricción BSD “only yourself” para agregar procesos de otros usuarios
u: utilizar el formato orientado al usuario
x: eliminar la restricción BSD “must have a tty” para agregar procesos que no tengan una tty asociada

Opciones de VIM

  • vim → Abre el editor de VIM
    • vim + un_nombre_archivo → Crea un archivo nuevo y lo abre
    • vim + un_archivo_ya_creado → Abre ese archivo y se puede editar
    • i → para insertar o editar
    • esc → para salir del editor
    • : → activar el modo comandos
    • :w → guardar el archivo
    • :q → salir de vim
    • :q! → forzar salir de vim (no realiza cambios)
    • :x → salir de vim guardando los cambios
    • :wq → guarda los cambios y luego sale de vim
    • :set → enumerar las líneas

Me gusto la opción de mantener procesos en backgroun mientras usas la terminal.
Puedes abrir varios y acceder a ellos con FG N (donde N es el número del proceso).
Ej:

vi archivo1.txt ==> Ctrl+z
nano archivo2.sh ==> Ctrl+z
vim archivo3.php ==> Ctrl+z

Volver al archivo 2: FG 2
Volver al Archivo 1 FG 1
Volver al archivo 3 FG 3

nohup: Abbrebiacion de no hangups. Le dice al sistema operativo que no detenga el comando que le sigue, una vez iniciado. Incluso, cuando cerremos session.

Para quienes instalaron Ubuntu server sin interfaz gráfica y no pueden hacer scroll, para moverse hacia arriba o abajo cuando la info excede la pantalla, utilizar Shift+AvPag y Shift+RePag.

Adicionalmente nohup te permite dejar corriendo un proceso en background aunque se cierre tu terminal. Por ejemplo cuando tienes un script con un loop de monitoreo y quieres que se quede corriendo aunque tu sesion se cierre lo ejecutas:

$ nohup ./script.sh &

Esto también se explica en el curso de introducción a la línea de comandos, aunque realmente el hecho de mandar un script al background significa pausarlo, yo pensaba que se seguía ejecutando por lo que trate de levantar un servidor de node con --watch usando ctrl + z pero el servidor se paró así que prefiero tener 2 terminales para esos casos jaja:(

Podemos seleccionar el proceso que queramos pasar de segundo a primer plano con:

fg %[ID del proceso]

el ID depende de lo que nos arroje jobs.

recomendable utilizar htop, muestra informacion mas sencilla y el consumo de cada recurso de la maquina

instalación: sudo apt-get install htop
ejecucion: htop

EJERCIO:

  1. abrir un editor de texto y mandarlo a segundo plano

  2. llamar al proceso al segundo plano y escribir el codigo de algun programa. En este caso el programa pide dos números cierta cantidad de veces. y se imprime la suma de estos dos números.

  3. Se guarda el programa y después se ejecuta en segundo plano.

  4. se mata el proceso del programa

DESARROLLO

  • se crea un script con vim

    vim sumar_numeros.sh

  • luego se escribe el programa

#!/usr/bin/env bash

read t
for (( i=0; i<t; i++ ))
do
	echo "sumar: "
	read a
	read b
	echo "resultado: "
	echo $(( $a + $b ))
done
  • Para mandar a segundo plano se pulsa Ctrl + z

  • con jobs se observa procesos ejecutados

  • con fg 1 vuelve al trabajo, en este caso el 1 corresponde al editor vim

  • para guardar y salir de vim escriba :wq y opcional puede escribir directamente el nombre del archivo en el que quiere escribir el codigo

  • para ejecutar el script hay que permitir su ejecucion

    chmod +x sumar_numeros.sh

  • para mandarlo a segundo plano en una misma linea de codigo, haga:

    ./sumar_numeros.sh &

  • matar el proceso: encuentre el PID del proceso con ps y luego ejecute:

    kill -9 <PID>

Un repaso a modo de ejemplo. Espero les sirva.

Mi resumen:
PS vemos los procesos del sistema, con el parámetro aux vemos mas procesos
| “Pipe” permite mandar la salida del anterior comando al siguiente
grep : Permite identificar una cadena
man comando: permite ver el manual del comando
./ permite ejecutar un script siempre y cuando este tenga permisos de ejecución
nohup: permite mandar la salia del script a un .out y seguir usando la consola

top -u <user>

es tambien otra forma de manera interactiva para mostrar los procesos que tiene un usuario del sistema

Entendido

ps
ps aux --procesos corriendo en el SO
ps aux | grep dbz -- filtrar por dbz
vi dbz-- crear documento dbz
jobs --procesos que se estan ejecutando
fg --traer el proceso suspendido
./script.sh -- ejecutar script
./script.sh & -- ejecutar script y genera proceso especifico para el script
nohup ./script.sh -- genera una salida del resultado del script 

relacionado con este tema en particular considero muy útil la clase de Procesos del curso de terminal de comandos 👌🏼

Para los que se pregunten (como me pregunté yo jeje) para sacar el “|” para el grep, lo hice con la tecla ctrl (me salió con la del lado derecho del teclado) + la tecla que está al lado del número 1, para un teclado de pc de escritorio. En el portátil, me salió con oprimir esa misma tecla pero sin el ctrl.

son infinitas las posibilidades al momento de usar la terminal y linea de comandos

user@user:~/Documents/Platzi/linux-server$ cat bash.sh
# bin/bash

let a=2
let b=5
let c=$a+$b

echo "Hola Mundo Cruel!" $c
user@user:~/Documents/Platzi/linux-server$ ./bash.sh 
Hola Mundo Cruel! 7
user@user:~/Documents/Platzi/linux-server$ 

Guide: Manejo y monitoreo de procesos y recursos del sistema 👨🏻‍💻

Ver guia completa en notion

ps muestra los procesos que están corriendo en el sistema.

ps aux muestra todos los procesos que están corriendo en el sistema.

¿Como identificar procesos de un usuario en específico?

ps aux | grep platzi donde concateno dos instrucciones con el pipe operator | y grep me ayuda a buscar una cadena de caracteres en específico.

Editor de texto VIM

VIM editor de texto, para crear un archivo nuevo vi nombre-archivo y enseguida nos lanza el editor. Utilizamos ctrl - z para detener el editor y abrir la consola.

El comando jobs me ayuda a visualizar los procesos detenidos, con fg vuelve a donde estaba anteriormente.

Para salir de VIM presionamos la tecla esc y digitamos**: q** o :wq para salir y guardar. Con la combinación de teclas Esc > Shift + ZZ salimos y guardamos, y Esc > Shift + ZX para salir sin guardar cambios.

  • :w – Guardar los cambios realizados
  • :q – Salir de VIM
  • :q! – Salir de VIM y descartar cambios realizados
  • :wq – Guardar y salir de VIM
  • :x – Guardar los cambios y salir de VIM

Ejecutar un script

Con VIM podemos escribir scripts y ejecutarlos de la siguiente forma:

./script.sh

Como usar el editor VIM

VIM editor de texto, para crear un archivo nuevo vi nombre-archivo y enseguida nos lanza el editor, para iniciar con la escritura en VIM digitanos i. Utilizamos ctrl - z para detener el editor y abrir la consola.

Para salir de VIM presionamos la tecla esc y digitamos**: q** o :wq para salir y guardar. Con la combinación de teclas Esc > Shift + ZZ salimos y guardamos, y Esc > Shift + ZX para salir sin guardar cambios.

  • :w – Guardar los cambios realizados
  • :q – Salir de VIM
  • :q! – Salir de VIM y descartar cambios realizados
  • :wq – Guardar y salir de VIM
  • :x – Guardar los cambios y salir de VIM

Que buenos comandos se dan en esta clase, toca apuntar uno por uno para no perder toda esta informacion.

nohup: Genera un archivo llamado “nohup.out” que muestra toda la información que el script realiza y que es lo que va haciendo en el tiempo de ejecucion

bastante interesante

Sugerencia al instructor, limpiar pantalla para cada comando que se va a ejecutar nuevo, asi se muestra mucho mejor para la clase.

Podemos traer a primer plano un proceso específico anteponiendo & a nuestro parámetro:

fg %numero_proceso

Así, si por ejemplo, tenemos en segundo plano 2 procesos, llamaríamos al segundo con:

fg %2

El comando “nohup” es un comando en Linux y otros sistemas operativos tipo Unix que se utiliza para ejecutar un comando sin interrupción. El comando se utiliza normalmente para ejecutar un programa en segundo plano, incluso si el usuario que inició el programa se desconecta o cierra su terminal.

El nombre “nohup” proviene de la frase “no hangup”, que se refiere al hecho de que el comando evita que el proceso se termine cuando el usuario cuelga (se desconecta) de la terminal. Esto permite que el proceso continúe ejecutándose, incluso si el usuario ya no está conectado o interactuando con el sistema.

Para utilizar el comando “nohup”, basta con especificar el comando que se desea ejecutar como argumento de “nohup”. Por ejemplo, para ejecutar el comando “sleep” en segundo plano, puede utilizar el siguiente comando:

nohup sleep 100 &

Esto ejecutaría el comando “sleep” en segundo plano, y continuaría ejecutándose incluso si el usuario que inició el comando se desconecta o cierra su terminal. El símbolo “&” al final del comando le dice al shell que ejecute el comando en segundo plano, para que el usuario pueda seguir usando la terminal mientras se ejecuta el comando.

En resumen, el comando “nohup” se utiliza para ejecutar un comando en segundo plano sin interrupción, incluso si el usuario que inició el comando cierra la sesión o se desconecta de la terminal. El nombre “nohup” viene de

Nohup, abreviatura de no hang up es un comando en sistemas Linux que mantiene los procesos en ejecución incluso después de salir del shell o terminal. Nohup evita que los procesos o trabajos reciban la señal SIGHUP (Signal Hang UP). Esta es una señal que se envía a un proceso al cerrar o salir de la terminal.

Hay 2 modos de operación en el editor Vi, el modo normal y el modo insertar.

  • El modo normal: aparece al inicio allí podemos leer el archivo, escribir los comandos: w, para guardar :q, para salir de vi :wq, para guardar y salir de vi o crt+z para detener proceso enviarlo al background, i para ingresar al modo insertar
  • El modo insertar: allí escribimos el contenido del archivo. para pasar al modo normal desde el modo insertar solo pulsamos esc.

ctrl + z => Manda un proceso a background
jobs => lista procesos en background
fg => devuelve proceso desde el background

COMANDOS USADOS:
ps: Muestra los procesos corriendo. Modificadores:
aux: Muestra todos los procesos
jobs: Al igual que el comando anterior, muestra los procesos. A diferencia de ps, es un comando interno de la terminal
fg: Abre un proceso que estaba pausado
nohup: Genera un archivo llamado “nohup.out” que muestra toda la información que produjo un proceso
grep: Nos ayuda a filtrar el resultado de un comando o el contenido de un archivo dependiendo de las palabras (o incluso expresión regular) que le indiquemos.

<ps aux --Procesos corriendo en el SO
ps aux | grep ubuntu -- Filtra por usuario ubuntu
vi script.sh -- Crear documento script.sh
#!/bin/bash  -- Encabezado que sirve al sistema para designar que se trata de un Script de SO.
echo "Hola Mundo"
Control + Z
jobs --Procesos que se estan ejecutando
fg --Trae el proceso suspendido antes de salir con Control + Z 
chmod +x script.sh -- Da permisos de ejecución al archivo ya que seguro no lo tendrá
./script.sh -- Ejecutar script
./script.sh & -- Ejecutar script y genera proceso especifico para el script
nohup ./script.sh & -- Genera una salida del resultado del script>

Me pasaba al levantar servidores en Nodejs que le daba sin querer a crtl+Z y ahora ya se por que y como paralo 😄

En centos8 al darle control-z a nano sale: “suspension is not enabled”

Se corrige editando el archivo /etc/nanorc

Se le quita el comentario a la linea que dice:

set suspend

En el minuto 4:19 donde crea el script mas sencillo, le da guardar pero no explica como, tal vez pueda ser una pregunta muy tonta, pero al explicar coge impulso y se le olvida que esta enseñando en un curso basico

  1. script.sh
#!/bin/bash
sleep 5
echo "Hola mundo"
  1. Ejecutarlo en segundo plano:
./script.sh &
  1. Traerlo a primer plano:
fg

Reto cumplido !!!

Para guardar el archivo vi script.sh, pulsan “Esc” y luego ingresan lo siguiente " :wq "
Para salir del archivo vi script.sh, pulsan “Esc” y luego ingresan lo siguiente " :qa! "

unos comandos muy importantes que no menciona al usar VI son:
":q" para salir del archivo sin guardar
":wq" para guardar y salir del archivo

ctrl + Z hace la misma funcion que cambiar de ventana como ALT + Tab

Para realizar multiples procesos desde “una” consola, solo es necesario usar Byobu.

Es lo primero que instalo en cualquier servidor que necesito administrar en forma remota (o local).

Que genial…varios comandos nunca los había usado. Claro que hay que practicar porque si no…uno se marea. La practica hace al maestro.!!..vamos que se puede.

Por ejemplo, el comando ps aux | grep platzi imprime los procesos activos del sistema y, con ayuda del pipe, envía la lista al comando grep para filtrar el resultado, mostrando únicamente las líneas con la palabra platzi.

El comando grep nos ayuda a filtrar el resultado de un comando o archivo dependiendo de las palabras de cada línea. Para esto también vamos a usar el pipe (|), un símbolo que nos ayuda a enviar el resultado de un comando a un segundo comando.

Para ver todos los procesos que corren en el sistema podemos usar el comando ps. Recuerda que puedes ver la documentación de este comando con el comando man ps.

Si la actividad que se quiere realizar es muy breve, no es necesario cerrar la sesión de vi, solo te cambias a modo comando y escribes:
:!{comando} y este se ejecutara en tu terminal

Esta clase me ha sido muy útil ya que trabajo con RedHat y la opción de tener procesos en background y luego tráelos es genial. Muchas gracias.

Hola, al momento de escribir ("#/bin/bash - echo “hola”) el VI no me permite guardar, me doy cuenta que en la parte baja de la pantalla donde indica “insertar” este desaparece y escribe :wq pero la terminal NO me permite guardar para pasar a la linea de comandos como puedo hacerlo? muchas gracias por responder

Mis apuntes:

#ps
Verifico los procesos

#jobs
Verifico procesos detenidos

#Ctrl + Z
Pongo en pausa una tarea

#fg
Ingreso a la última tarea realizada.

#&
Oculta la salida del script
#Ejemplo:
sh script.sh &

excelente video esta muy bien explicado felicidades Jhon Edison Castro Sanchez

ctrl +z , jobs y fg son muy útiles, antes era muy tedioso tener que salir buscar un archivo regresar para volverlo a editar.

Aprendido

tips:

ps: ver todos los proceso en nuestro shell activo.
ps -ef: ver todos los procesos del sitema (en formato completo).
ps -eLf: visualizar procesos con sus respectivos hilos/threads.
ps aux: Mostrar los procesos en estilo BSD
ps axo user, stat, pid, pcpu, comm: presonalizar los atributos a mostrar de los procesos.

En caso de tener varios procesos en bg, debo ocupar el id del proceso para traerlo al frente o por defecto fg siempre trae el primer proceso listado?

Me parece genial el comando nohup entrega un informe de la salida y además se pueden concatenar las salidas en el archivo nohup.out.
Reto:

ps aux: Lista los procesos corriendo.
Usando el comando | grep resaltamos procesos en especifico.
vi es un editor de texto complejo, para poder editar en el usamos i, para guardar usamos :wq (vaya proceso)

ps aux Muestra procesos, usuarios, comando
ps aux | grep “platzi” Muestra procesos que mencionan platzi
jobs Muestra los procesos en background
fg Trae el proceso a frontground
./script.sh & Ejecuta script sin perder la consola
nohup ./script.sh & Ejecuta script sin perder la consola y crea nohup.out

poniendo en practica lo aprendido

nohup le permite a uno ver las salidas de un proceso o script en segundo plano

  • my script

resultado

Hay una herramienta que facilita mucho la apertura de las consola y de igual manera eliminarlas el software se llama Byobu Aqui esta la documentacion

Y lo podemos instalar con el comando.

El (-y) es para que no se pare la instalación por preguntarte si quieres continuar con ella.

sudo apt install -y byobu

que buen curso!

Un pequeño aporte sobre el comando nohup

El comando nohup permite ejecutar un proceso en segundo plano, incluso si el usuario se desconecta o cierra la sesión. Los mensajes de salida del proceso (es decir, lo que imprimiría en consola, por ejemplo) se redirigen a nohup.out o a un archivo especificado con el argumento -o. Este comando es especialmente útil para mantener procesos en ejecución de manera continua.

Me gusta la metodología de enseñanza, y el conocimiento del instructor. Todo mi referente a Linux siempre tiene mucho tabú, pero con una buena guía este pensamiento se viene al piso fácilmente. Dedicado y agradecido por tan excelente curso y calidad.

En Linux y otros sistemas operativos tipo Unix, la tabla de procesos es una estructura de datos que contiene información sobre todos los procesos que se están ejecutando actualmente en el sistema. Esta información incluye el ID del proceso (PID), el usuario propietario del proceso, el comando que se utilizó para iniciar el proceso, el estado actual del proceso y otros detalles.

La tabla de procesos es gestionada por el núcleo de Linux, y se utiliza para realizar un seguimiento de los procesos que se están ejecutando actualmente en el sistema. Esta información es utilizada por el núcleo para gestionar la ejecución de los procesos, para asignar recursos del sistema como CPU y memoria, y para proporcionar información a los programas de espacio de usuario que necesitan interactuar con los procesos.

La tabla de procesos puede visualizarse utilizando el comando “ps” en Linux, junto con las opciones apropiadas. Por ejemplo, el comando “ps aux” mostrará la tabla de procesos, incluyendo información sobre cada proceso como el PID, usuario, comando, uso de CPU y memoria, y TTY. La tabla de procesos también puede visualizarse utilizando el sistema de archivos /proc, que proporciona una vista virtual de la tabla de procesos y otra información del sistema.

En Linux y otros sistemas operativos tipo Unix, un proceso zombi es un proceso que ha finalizado su ejecución pero que todavía tiene una entrada en la tabla de procesos. Esto puede ocurrir si el proceso padre del proceso zombi aún no ha esperado a que salga, o si el proceso padre ha terminado sin limpiar adecuadamente sus procesos hijos.

Los procesos zombis suelen ser inofensivos y no consumen más recursos del sistema que una pequeña cantidad de memoria para su entrada en la tabla de procesos. Sin embargo, pueden indicar un problema con el proceso padre, ya que éste es responsable de limpiar sus procesos hijos cuando han finalizado su ejecución.

Si hay un gran número de procesos zombi en el sistema, puede indicar que los procesos padre no están limpiando correctamente sus procesos hijo, lo que puede causar problemas con la gestión de recursos y el rendimiento del sistema. En tales casos, puede ser necesario investigar la causa de los procesos zombis y tomar las medidas adecuadas para resolver el problema.

Los procesos zombis pueden identificarse utilizando el comando “ps” en Linux, junto con las opciones apropiadas. Por ejemplo, el comando “ps aux” mostrará el estado de cada proceso, incluyendo cualquier proceso que se encuentre en estado zombi. La columna STAT en la salida del comando “ps” mostrará el estado de cada proceso, y una “Z” en esta columna indica un proceso zombi.

El comando “ps aux” es un comando común en Linux que se utiliza para ver información sobre los procesos que se están ejecutando actualmente en el sistema. El comando se compone de dos partes: “ps” y “aux”.
El comando “ps” se utiliza para mostrar información sobre los procesos en el sistema. Esta información puede incluir el ID del proceso (PID), el usuario propietario del proceso, el comando que se utilizó para iniciar el proceso y el estado actual del proceso. Por sí mismo, el comando “ps” mostrará información sobre todos los procesos que son propiedad del usuario actual.

La opción “aux” se utiliza para modificar el comportamiento del comando “ps”. La opción “a” indica al comando “ps” que muestre información sobre todos los procesos, no sólo sobre los que pertenecen al usuario actual. La opción “u” indica al comando “ps” que muestre información adicional sobre cada proceso, como el uso de CPU y memoria del proceso. Por último, la opción “x” indica al comando “ps” que muestre también los procesos que no tienen un terminal de control.
La lista incluye el PID (ID del proceso), el usuario propietario del proceso, el comando que se utilizó para iniciar el proceso, el uso de CPU y memoria del proceso, el tamaño de la memoria virtual (VSZ) y el tamaño del conjunto residente (RSS) del proceso, el TTY (terminal) asociado al proceso y la hora a la que se inició el proceso.
La columna TIME muestra el tiempo total de CPU que el proceso ha utilizado desde que se inició, y la columna STAT muestra el estado actual del proceso. Los valores posibles para la columna STAT son:

S: Reposo interrumpible (esperando a que se complete un evento).
D: suspensión ininterrumpida (normalmente esperando a que se complete una E/S)
R: En ejecución
T: Detenido (normalmente debido a una señal)
Z: Zombie (un proceso que ha finalizado pero su proceso padre aún no ha esperado a que salga)
Las columnas TIME y STAT pueden proporcionar información adicional sobre los procesos del sistema, y pueden ser útiles para solucionar problemas o supervisar el rendimiento del sistema. Por ejemplo, puede utilizar la columna TIME para identificar los procesos que llevan mucho tiempo en ejecución, o puede utilizar la columna STAT para identificar los procesos que están detenidos o en estado zombi.
En Linux, el VSZ (Virtual Memory Size) es la cantidad total de memoria virtual (en kilobytes) que está actualmente asignada a un proceso. La memoria virtual es una característica de los sistemas operativos modernos que permite a un proceso utilizar más memoria de la que está físicamente disponible en el sistema.

La memoria virtual permite a un proceso almacenar temporalmente datos en el disco si no tiene suficiente memoria física para almacenar todos los datos en la RAM. Esto puede ser útil para procesos que necesitan trabajar con grandes cantidades de datos, ya que les permite utilizar más memoria de la que sería posible sólo con la RAM física del sistema.

La VSZ de un proceso puede ser una métrica importante para monitorizar el rendimiento del sistema, ya que puede proporcionar una indicación de la cantidad de memoria virtual que está siendo utilizada por el proceso. Si la VSZ de un proceso es consistentemente alta, puede indicar que el proceso está utilizando mucha memoria virtual y que puede estar impactando en el rendimiento general del sistema. por ejemplo, si un proceso tiene un uso de memoria virtual muy grande, puede indicar que puede haber un número considerable de fallos de página (https://en.wikipedia.org/wiki/Page_fault).
En Linux, el RSS (Resident Set Size) es la cantidad de memoria física (en kilobytes en la RAM) que un proceso está utilizando actualmente. Esto incluye tanto la memoria que el proceso ha asignado para su propio uso, así como cualquier memoria que haya sido compartida con otros procesos.
El RSS de un proceso puede ser una métrica importante para controlar el rendimiento del sistema, ya que puede proporcionar una indicación de la cantidad de memoria que está siendo utilizada por el proceso. Si el RSS de un proceso es constantemente alto, puede indicar que el proceso está utilizando mucha memoria y que puede estar afectando al rendimiento general del sistema.

No puedes hacer scroll en la terminal por lo que no puedes ver todo el contenido de ps aux u otros comandos?

Esto lo solucionamos ejecutanto el comando ps aux en less:

ps aux | less

con esto ya podran ver todo el contenido, para salir usan la tecla q

Comando para reiniciar la consola:

tput reset

me encanta este curso

exelente explicacion

RESUMEN DE LA CLASE
manejo y monitoreo de procesos y recursos del sistema
comandos

ohhh GREP, lo amo tanto

uff genial

un script para jugar al ahorcado esta un poco feito el codigo pero hace su trabajo.

 #!/bin/bash
 arreglos=(`cat "diccionario.txt"`)
 numeroRandom=$(($RANDOM%(${#arreglos[*]})))
 arregloEscogido=${arreglos[$numeroRandom]}
 escondido=()
 escogido=()
 vidas=10
 
  for ((i=0; i < ${#arregloEscogido}; i++))
  do
        #escondido=("${escondido[@]}" "_ ")   # los dos funcionan perfectamente para pushear valores.
        escogido+=("${arregloEscogido:$i:1}")
    done
 
  for ((i=0; i < ${#arregloEscogido}; i++))
  do
      #escondido=("${escondido[@]}" "_ ")   # los dos funcionan perfectamente para pushear valores.
      escondido+=("_ ")
 done
 
 
 while [ $vidas -gt 0 ]
 
      si_adivino=1
     clear
   echo "Adivina la palabra: ${escondido[*]} numero de vidas: $vidas"
   read -p "escribe una  letra: " letra
     for ((i=0; i < ${#arregloEscogido}; i++))
     do
          if [ $letra == ${arregloEscogido:$i:1} ]; then
              escondido[$i]=$letra
             si_adivino=0
         fi
      done
      if [ "${escondido[*]}" == "${escogido[*]}"  ]; then
         break
      elif [ "$letra" == "${arregloEscogido[*]}" ]; then
          break
      elif [ $si_adivino -eq 1 ]; then
         vidas=$((vidas - 1))
      fi
  done
 
 
  if [ $vidas -gt 0 ]; then
      echo "GANASTE la palabra correcta es: ${arregloEscogido}"
  else
      echo "Perdiste alpiste la palabra correcta es: ${arregloEscogido}"
  fi                              

:qa! = Cierra el editor vi

Terminal Ubuntu, en Win11

este es mi aporte es desde una Mac
aqui el cat

y aca la ejecución

Así que así podemos tener varios procesos a la vez en una sola terminal, interesante a seguir

$ ps -> Procesos activos
$ ps aux -> Consumo de recursos de los procesos
**$ grep ** -> Nos ayuda a filtrar el resultado de un comando o archivo
$ comando_salida | grep palabra_a_filtrar -> nos ayuda a enviar el resultado de un comando a un segundo comando.
$ ps aux | grep platzi -> Ejemplo del comando de arriba
$ Ctrl + Z -> Enviar procesos a background, nos permite hacer multiples
tareas en una sola terminal
$ fg o fg num -> Seleccionamos el numero del proceso nuevamente a activar
$ vi script. sh -> Crear el siguiente script

#!/bin/bash
echo "hola"

$ ./script. sh & -> ejecuta y crea un proceso
$ nohup . /script.sh & -> crea un proceso nohup.out que lleva la salida del archivo script. sh
$ cat nohup. out -> imprime la salida guardada en el proceso nohup (nohup te da una salida, Y pipe | solo te deja seguir trabajando)

Buen contenido

para el comando 
ps
tambien podemos usar 
top
te mostrará los procesos actuales en tiempo real

No es una buena practica dar el permiso de ejecución a todos (usuario, grupo, otros). Por ello para ejecutar el script, solo se agregaría el permiso de ejecución al usuario.

chmod u+x script.sh

Utilizando pipe | podemos realizar consultas más interesantes.

Imagina que quieres ver los procesos con: ps aux, pero también quieres filtrar, para filtrar lo podemos hacer con grep ‘Lo que quieres buscar’, para utilizar ambas herramientas o comandos simplemente debes utilizar pipe |, de la siguiente manera:

ps aux | grep 'Lo que quieres filtrar'

¿Qué es el comando nohup?
Nohup significa ‘no hang up’ y, como su nombre lo indica, evita que el comando se cancele automáticamente cuando cierra sesión o sale del shell.

¿Cómo usar el comando nohup?

Podemos utilizar nohup de dos formas. Primero está ejecutando el comando con parámetros sin recibir ninguna otra entrada mientras trabaja. Todos los resultados, incluidos los mensajes de error, se escribirán en el archivo nohup.out en el directorio de trabajo o en su directorio de inicio. Si el comando aún se está ejecutando cuando cierra la sesión o cierra la terminal, no terminará.

Use el comando nohup con ‘&’

Para iniciar un proceso y ponerlo en segundo plano, básicamente ejecuta el comando seguido del símbolo «&». El símbolo «&» al final del comando indica a bash que se ejecute nohup yourcommand en el fondo. Puede devolverse al primer plano con el comando fg.

Para una mejor experiencia de usuario, puedes administrar el servidor desde su consola del sistema operativo (más bonita y configurada con sus temas). solo tienen que ejecutar
ssh [email protected]
ponen su contraseña y listo.

Me costo entendelo bien pero al final lo hice.
Vamos!!!

ps: sirve para ver que procesos corren en el sistema operativo
"ps aux"
spacebar pasar paginas del manual
ps aux | grep username
| concatena comando y grep busca string especifica
para idenficar procesos relacionado con la palabrqa clave username
Con control +z pongo los procesos en background
para ejecutar un script se usa ./nombreScript.sh
para hacerlo de manera asincronica ./nombreScript.sh & pero este no muestra salida, para que la muestre se usa nohup ./nombreScript.sh &

-Mis notas de clase-

Una de las funciones importantes de los administradores de sistemas es verificar que todos los procesos que se están ejecutando sean validos y no sean procesos que estén haciendo cosas maliciosas.

En ocasiones estamos trabajando en un editor de texto en la consola, pero necesitamos volver a la consola sin cerrar el editor, para esto paramos el proceso de la consola presionando las teclas “ctrl+z” y esto me detendrá el proceso, puedo ver el proceso con el comando “jobs”, si quiero continuar el proceso puedo ejecutar el comando “fg”.

Podemos crear un “script. sh” con algún editor como vi o vim, luego para ejecutar esos scripts se debe colocar un punto “.” y una barra inclinada “/” antes del nombre del script. Ejemplo: “./script. sh” esto ejecutaría el script, pero antes se debe otorgar permisos de ejecución al archivo con “chmod +x script. sh”.

El comando nohup es útil cuando se están desplegando servidores ya que nos permite saber que realiza el script.

Comandos vistos en clase:
ps: Muestra los procesos que se están ejecutando.
ps aux: Muestra todos los procesos en ejecución.
ps aux | greep {palabra}: Busca los procesos que se ejecutan por el usuario (especificado en “{palabra}”). O que contengan la palabra en su salida.
jobs: Permite ver los procesos que se están ejecutando
fg {#}: Permite reanudar procesos. si solo hay un proceso se puede poner solo ps sin el numero del proceso.
nohup {script}: Genera un archivo llamado “nohup. out” que muestra la información que genera un proceso.

nohup is a POSIX command which means “no hang up”. Its purpose is to execute a command such that it ignores the HUP signal and therefore does not stop when the user logs out. Output that would normally go to the terminal goes to a file called nohup.out, if it has not already been redirected.

Jobs Command: Jobs command is used to list the jobs that you are running in the background and in the foreground. If the prompt is returned with no information no jobs are present. All shells are not capable of running this command. This command is only available in the csh, bash, tcsh, and ksh shells.

**COMANDOS BASICOS EN VI O VIM
**
q!: cierra archivo sin guardar
x! : cierra archivo y guarda

wq! : cierra archivo y guarda

i: inset
v:modo visual
d : delete
y :copiar
p :paste

Dejo mis notas por si alguien le sirve:

monitoreo de procesos:

ps aux ---> ver todos los procesos que actualmente estan en el SO
ps aux | grep anthony --> filtrarai todos los procesos del usuario anthony
jobs --> ver los procesos que estoy ejecutando actualmente
ejemplo, si estoy editando con vim y le doy ctrl+z , detengo el vim y veo el proceso detenido con jobs

y para volver al proceso anterior que paré seria:

fg --> vuelve al editor en este caso

creando script:

vim script.sh --> crea el archivo y entra al editor

dentro coloco:

#!/bin/bash
echo "hola"
chmod +x script.sh --> damos permiso de ejecucion
./script.sh --->ejecuta script
./script.sh  & --->ejecuta script background y muestra el proccess ID
nohup ./script.sh & --> ejecutas el archivo y ademas crea un archivoo con las salidas del script.sh

aplicacion de comandos de monitoreo
nohup

Recuerden que pueden utilizar Hyper-v para virtualizar de forma nativa con Windows. 😃

Les comparto mi corto script xd.
[](
@echo off
Set/a suma=5+3
Echo %suma%
Echo
Pause
)

Excelente, gracias

Bastante interesante y muy utiles estos comandos.