Mettez-vous hors ligne avec l'application Player FM !
«SAR o no SAR» con LinuxDoesMatter y ChatGPT
Manage episode 398033143 series 1898587
Prompt 1:
“Tengo en un servidor Linux un directorio que se llama /bk_datos. Quiero que de otro directorio de mi host llamado /datos_2024 se haga una copia de seguridad total los sábados a las 18:30pm y una copia incremental de Lunes a Viernes a las 22:00pm en el directorio /bk_datos Quiero que uses el comando tar y que comprimas con xz”.
Respuesta 1:
#!/bin/bash # Ruta del directorio de origen source_directory="/datos_2024" # Ruta del directorio de destino backup_directory="/bk_datos" # Nombre del archivo de copia de seguridad backup_file="$backup_directory/backup_$(date +\%Y-\%m-\%d_%H-\%M).tar.xz" # Verificar si es sábado if [ "$(date +\%u)" -eq 6 ]; then # Copia de seguridad total los sábados a las 18:30 tar --listed-incremental="$backup_directory/incremental.snar" -cJf "$backup_file" "$source_directory" echo "Copia de seguridad total realizada el $(date +\%Y-\%m-\%d_%H-\%M)." else # Copia de seguridad incremental de Lunes a Viernes a las 22:00 tar --listed-incremental="$backup_directory/incremental.snar" -cJf "$backup_file" "$source_directory" echo "Copia de seguridad incremental realizada el $(date +\%Y-\%m-\%d_%H-\%M)." fi ……………………………………… chmod +x backup_script.sh # Copia total los sábados a las 18:30 30 18 * * 6 /ruta/al/backup_script.sh # Copia incremental de lunes a viernes a las 22:00 0 22 * * 1-5 /ruta/al/backup_script.sh
Referencia: https://juncotic.com/tar-backups-incrementales-gnu-linux/
Solo me queda añadir la lógica para que el sábado “expulse” el snapshot y haga un backup total puro y duro creando el fichero de snapshot incremental .snar nuevecito para los subsiguientes incrementales de lunes a viernes.
Conclusión: ChatGPT Me ha ayudado mucho no, ¡muchísimo! pero hay veces que el remate lo tiene que hacer el “ser humano”.
Prompt 2:
“Tengo un partición montada en un directorio que se llama /proyecto_seal y tengo tres usuarios user01, user02 y user03. Quiero que los tres usuarios tengan acceso a este directorio. También quiero una política de cuotas con un soft limit de 2G y periodo de gracia de 3 dias y una hard limit de 5G. Otorga al directorio el permiso apropiado para que ningún usuario de esto tres pueda borrar lo que han creado los otros”
Respuesta 2:
# Asegúrate de que el grupo exista, si no, créalo sudo groupadd proyecto_seal # Añade usuarios al grupo sudo usermod -aG proyecto_seal user01 sudo usermod -aG proyecto_seal user02 sudo usermod -aG proyecto_seal user03 # Cambia el propietario y grupo del directorio sudo chown :proyecto_seal /proyecto_seal # Establece permisos para el propietario (dueño del directorio) sudo chmod 1770 /proyecto_seal # Permite que los miembros del grupo tengan acceso total sudo chmod g+rwx /proyecto_seal # Restringe el acceso a otros usuarios (no propietarios ni del grupo) sudo chmod o-rwx /proyecto_seal sudo apt-get install quota vi /etc/fstab UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /proyecto_seal ext4 defaults,usrquota,grpquota 0 2 sudo mount -o remount /proyecto_seal sudo quotacheck -cug /proyecto_seal sudo edquota -u user01 sudo edquota -u user02 sudo edquota -u user03
Prompt 3:
Tengo un fichero de texto con paths completos de directorios, algunos caminos empiezan por /usr/bin/local/ y quiero en estos que empiezan por /usr/bin/local/ y solo en estos eliminar /usr/bin/local/ ¿Me creas un script para realizar esta tarea?
Respuesta 3:
#!/bin/bash # Verificar si se proporcionó un archivo como argumento if [ -z "$1" ]; then echo "Uso: $0 archivo" exit 1 fi archivo="$1" # Verificar si el archivo existe if [ ! -f "$archivo" ]; then echo "El archivo '$archivo' no existe." exit 1 fi # Crear un archivo temporal para almacenar los resultados archivo_temporal=$(mktemp) # Procesar el archivo línea por línea while IFS= read -r linea; do # Verificar si la línea comienza con /usr/bin/local/ if [[ "$linea" == "/usr/bin/local/"* ]]; then # Eliminar /usr/bin/local/ de la línea nueva_linea="${linea#/usr/bin/local/}" echo "$nueva_linea" >> "$archivo_temporal" else # Conservar la línea tal cual si no comienza con /usr/bin/local/ echo "$linea" >> "$archivo_temporal" fi done < "$archivo" # Sobrescribir el archivo original con los resultados mv "$archivo_temporal" "$archivo" echo "Proceso completado. Se ha modificado el archivo '$archivo'."
Y vamos con SAR…
sar es una herramienta de monitorización de recursos en sistemas basados en Unix, como Linux. El nombre «sar» proviene de «System Activity Reporter». Esta utilidad permite recopilar, informar y analizar datos sobre la actividad del sistema, incluyendo el uso de CPU, memoria, E/S (entrada/salida) y otros recursos.
El paquete sar generalmente viene incluido en el conjunto de herramientas de sysstat. Para utilizar sar en Linux, debes asegurarte de que sysstat esté instalado.
Con mucha seguridad el paquete systat estará instalado pero si no procedemos como siempre
Para Centos/Redhat sería algo como esto… yum o dnf
yum install sysstat -y systemctl start sysstat.service systemctl enable sysstat.service
Pero ya que estamos con ChatGPT usamos este PROMPT para que nos diga cómo ponerlo en marcha. No obstante la instalación y puesta en marcha de sar/sysstat está francamente bien documentado en montones de sitios web que se encuentran con la oportuna búsqueda en google.
“¿Me explicas detalladamente cómo poner en marcha sar en Linux Centos a partir de la instalación de sysstat?”
Respuesta de ChatGPT:
Paso 1: Instalar sysstat sudo yum install sysstat Paso 2: Habilitar y configurar sysstat sudo nano /etc/sysconfig/sysstat Dentro de este archivo, asegúrate de que la variable ENABLED esté establecida en "true". Si no está configurada, cámbiala a: ENABLED="true" Paso 3: Iniciar y activar el servicio sysstat sudo systemctl start sysstat sudo systemctl enable sysstat Paso 4: Configurar la recopilación automática de datos La recopilación automática de datos se realiza mediante el cron. El archivo /etc/cron.d/sysstat configura la programación de las actividades de recopilación. Abre el archivo /etc/cron.d/sysstat en un editor de texto: sudo nano /etc/cron.d/sysstat Asegúrate de que la tarea cron esté descomentada y configurada según tus necesidades. Por defecto, la recopilación de datos se programa cada 10 minutos: */10 * * * * root /usr/lib64/sa/sa1 1 1 Puedes ajustar el intervalo según tus preferencias.
Genial respuesta una vez puesto en marcha empezamos ejecutar comandos sar para indagar la carga del sistema en diferentes aspectos…
Esta utilidad permite recopilar, informar y analizar datos sobre la actividad del sistema, incluyendo el uso de CPU, memoria, E/S (entrada/salida), swap, disco, paginación, red, etc.
Vamos a crear prompts para que me genere informes sobre cada uno de estos aspectos.
“ChatGPT voy a arrancar un aplicación en Linux y quiero saber el impacto a nivel de consumo de CPU que va a tener. Créame el comando sar para esta prueba y poder observar el consumo de CPU por la ejecuc.ión de esta aplicación”
Respuesta de ChatGPT: Eso es en el presente.
sar -u 1 Este comando recopilará estadísticas de CPU cada segundo (-u 1) y mostrará el uso de CPU, carga promedio y más. Ejecuta tu aplicación: Inicia la aplicación que deseas probar. Mientras se ejecuta, sar continuará recopilando y mostrando estadísticas de CPU cada segundo. Detén la recopilación de datos de sar: Puedes detener la recopilación de datos presionando Ctrl + C. Después de esto, sar mostrará un resumen del uso de la CPU durante el período de recopilación. El comando y la salida se verán algo así: Esto en el presente:
En esta salida, %user representa el porcentaje de tiempo de CPU gastado en el espacio de usuario (aplicaciones), y %system representa el porcentaje de tiempo de CPU gastado en el kernel del sistema.
Observa los valores de %user y %system para evaluar el impacto en el consumo de CPU de tu aplicación durante la ejecución. También puedes ajustar el intervalo de recopilación (1 en el comando -u 1) según tus necesidades para obtener más o menos granularidad en los datos recopilados.
ChatGPT dime cómo evolucionó el consumo de CPU entre las 01:00am y 4:00am del 12 de enero de 2024. Dame por favor el comando sar que debo ejecutar.
Salida de ChatGPT: Esto es una pregunta “hacia el pasado”.
Evolución ficticia Linux 5.4.0-74-generic (hostname) 12/01/2024 _x86_64_ (1 CPU) 01:00:00 AM CPU %user %nice %system %iowait %steal %idle 01:10:00 AM all 10.00 0.50 5.00 0.00 0.00 84.50 01:20:00 AM all 12.00 0.75 6.00 0.10 0.05 81.10 01:30:00 AM all 15.00 1.00 7.50 0.20 0.10 76.20 ... 03:50:00 AM all 25.00 2.00 12.50 0.50 0.25 60.75 04:00:00 AM all 22.50 1.75 11.25 0.30 0.15 64.05
Una vez visto cómo se construye el comando sar para ver el consumo de CPU a través del prompt de ChatGPT, os toca a vosotros extrapolarlo los siguientes aspectos del rendimiento del sistema
Listado de comandos básicos de sar para monitorear diferentes aspectos del sistema, con ejemplos sencillos: 1. Uso de CPU: Comando: sar -u 1 Ejemplo: sar -u 1 Descripción: Muestra estadísticas de uso de CPU cada segundo. 2. Uso de Memoria RAM: Comando: sar -r 1 Ejemplo: sar -r 1 Descripción: Muestra estadísticas de uso de memoria RAM cada segundo. 3. Uso de Swap: Comando: sar -S 1 Ejemplo: sar -S 1 Descripción: Muestra estadísticas de uso de swap cada segundo. 4. Uso de Disco: Comando: sar -b 1 Ejemplo: sar -b 1 Descripción: Muestra estadísticas de E/S de bloque (disco) cada segundo. 5. Paginación: Comando: sar -B 1 Ejemplo: sar -B 1 Descripción: Muestra estadísticas de paginación cada segundo. 6. Estadísticas de Red: Comando: sar -n DEV 1 nota DEV seria eth0, eth1, enp0s3, etc Ejemplo: sar -n DEV 1 Descripción: Muestra estadísticas de red para cada interfaz de red cada segundo. Estos comandos te proporcionarán información útil sobre el rendimiento del sistema en tiempo real. Puedes ajustar el intervalo (1 en los ejemplos) según tus necesidades. Recuerda que la disponibilidad de ciertas métricas puede variar según tu sistema operativo y configuración específica.
Muy probablemente ya sar estará up & running en vuestro servidor. Yo personalmente tengo ya unos comandos sar preparados que los utilizo cuando hay una “crisis” las respuestas de ChartGPT complementan y refuerzan mi colección de comando sar para momentos en que el servidor esta impactado y quiero saber que pasó a nivel me memoria, cpu, swap, red, etc en el pasado.
Imagen generada con Bing:
Enlaces a las clases y los talleres:
Clase 1
https://growthhackingcourse.io/clases-chatgpt/
Clase 2
https://growthhackingcourse.io/clase-2-chatgpt-dominando-los-prompts/
Clase 3
https://growthhackingcourse.io/clase-3-chatgpt-automatizando-la-generacion-de-contenidos/
Taller1:
https://directo.growthhackingcourse.io/taller-chat-gpt-en-directo/
Taller2:
https://www.youtube.com/watch?v=-f2xdGwkO3k
129 episodes
Manage episode 398033143 series 1898587
Prompt 1:
“Tengo en un servidor Linux un directorio que se llama /bk_datos. Quiero que de otro directorio de mi host llamado /datos_2024 se haga una copia de seguridad total los sábados a las 18:30pm y una copia incremental de Lunes a Viernes a las 22:00pm en el directorio /bk_datos Quiero que uses el comando tar y que comprimas con xz”.
Respuesta 1:
#!/bin/bash # Ruta del directorio de origen source_directory="/datos_2024" # Ruta del directorio de destino backup_directory="/bk_datos" # Nombre del archivo de copia de seguridad backup_file="$backup_directory/backup_$(date +\%Y-\%m-\%d_%H-\%M).tar.xz" # Verificar si es sábado if [ "$(date +\%u)" -eq 6 ]; then # Copia de seguridad total los sábados a las 18:30 tar --listed-incremental="$backup_directory/incremental.snar" -cJf "$backup_file" "$source_directory" echo "Copia de seguridad total realizada el $(date +\%Y-\%m-\%d_%H-\%M)." else # Copia de seguridad incremental de Lunes a Viernes a las 22:00 tar --listed-incremental="$backup_directory/incremental.snar" -cJf "$backup_file" "$source_directory" echo "Copia de seguridad incremental realizada el $(date +\%Y-\%m-\%d_%H-\%M)." fi ……………………………………… chmod +x backup_script.sh # Copia total los sábados a las 18:30 30 18 * * 6 /ruta/al/backup_script.sh # Copia incremental de lunes a viernes a las 22:00 0 22 * * 1-5 /ruta/al/backup_script.sh
Referencia: https://juncotic.com/tar-backups-incrementales-gnu-linux/
Solo me queda añadir la lógica para que el sábado “expulse” el snapshot y haga un backup total puro y duro creando el fichero de snapshot incremental .snar nuevecito para los subsiguientes incrementales de lunes a viernes.
Conclusión: ChatGPT Me ha ayudado mucho no, ¡muchísimo! pero hay veces que el remate lo tiene que hacer el “ser humano”.
Prompt 2:
“Tengo un partición montada en un directorio que se llama /proyecto_seal y tengo tres usuarios user01, user02 y user03. Quiero que los tres usuarios tengan acceso a este directorio. También quiero una política de cuotas con un soft limit de 2G y periodo de gracia de 3 dias y una hard limit de 5G. Otorga al directorio el permiso apropiado para que ningún usuario de esto tres pueda borrar lo que han creado los otros”
Respuesta 2:
# Asegúrate de que el grupo exista, si no, créalo sudo groupadd proyecto_seal # Añade usuarios al grupo sudo usermod -aG proyecto_seal user01 sudo usermod -aG proyecto_seal user02 sudo usermod -aG proyecto_seal user03 # Cambia el propietario y grupo del directorio sudo chown :proyecto_seal /proyecto_seal # Establece permisos para el propietario (dueño del directorio) sudo chmod 1770 /proyecto_seal # Permite que los miembros del grupo tengan acceso total sudo chmod g+rwx /proyecto_seal # Restringe el acceso a otros usuarios (no propietarios ni del grupo) sudo chmod o-rwx /proyecto_seal sudo apt-get install quota vi /etc/fstab UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /proyecto_seal ext4 defaults,usrquota,grpquota 0 2 sudo mount -o remount /proyecto_seal sudo quotacheck -cug /proyecto_seal sudo edquota -u user01 sudo edquota -u user02 sudo edquota -u user03
Prompt 3:
Tengo un fichero de texto con paths completos de directorios, algunos caminos empiezan por /usr/bin/local/ y quiero en estos que empiezan por /usr/bin/local/ y solo en estos eliminar /usr/bin/local/ ¿Me creas un script para realizar esta tarea?
Respuesta 3:
#!/bin/bash # Verificar si se proporcionó un archivo como argumento if [ -z "$1" ]; then echo "Uso: $0 archivo" exit 1 fi archivo="$1" # Verificar si el archivo existe if [ ! -f "$archivo" ]; then echo "El archivo '$archivo' no existe." exit 1 fi # Crear un archivo temporal para almacenar los resultados archivo_temporal=$(mktemp) # Procesar el archivo línea por línea while IFS= read -r linea; do # Verificar si la línea comienza con /usr/bin/local/ if [[ "$linea" == "/usr/bin/local/"* ]]; then # Eliminar /usr/bin/local/ de la línea nueva_linea="${linea#/usr/bin/local/}" echo "$nueva_linea" >> "$archivo_temporal" else # Conservar la línea tal cual si no comienza con /usr/bin/local/ echo "$linea" >> "$archivo_temporal" fi done < "$archivo" # Sobrescribir el archivo original con los resultados mv "$archivo_temporal" "$archivo" echo "Proceso completado. Se ha modificado el archivo '$archivo'."
Y vamos con SAR…
sar es una herramienta de monitorización de recursos en sistemas basados en Unix, como Linux. El nombre «sar» proviene de «System Activity Reporter». Esta utilidad permite recopilar, informar y analizar datos sobre la actividad del sistema, incluyendo el uso de CPU, memoria, E/S (entrada/salida) y otros recursos.
El paquete sar generalmente viene incluido en el conjunto de herramientas de sysstat. Para utilizar sar en Linux, debes asegurarte de que sysstat esté instalado.
Con mucha seguridad el paquete systat estará instalado pero si no procedemos como siempre
Para Centos/Redhat sería algo como esto… yum o dnf
yum install sysstat -y systemctl start sysstat.service systemctl enable sysstat.service
Pero ya que estamos con ChatGPT usamos este PROMPT para que nos diga cómo ponerlo en marcha. No obstante la instalación y puesta en marcha de sar/sysstat está francamente bien documentado en montones de sitios web que se encuentran con la oportuna búsqueda en google.
“¿Me explicas detalladamente cómo poner en marcha sar en Linux Centos a partir de la instalación de sysstat?”
Respuesta de ChatGPT:
Paso 1: Instalar sysstat sudo yum install sysstat Paso 2: Habilitar y configurar sysstat sudo nano /etc/sysconfig/sysstat Dentro de este archivo, asegúrate de que la variable ENABLED esté establecida en "true". Si no está configurada, cámbiala a: ENABLED="true" Paso 3: Iniciar y activar el servicio sysstat sudo systemctl start sysstat sudo systemctl enable sysstat Paso 4: Configurar la recopilación automática de datos La recopilación automática de datos se realiza mediante el cron. El archivo /etc/cron.d/sysstat configura la programación de las actividades de recopilación. Abre el archivo /etc/cron.d/sysstat en un editor de texto: sudo nano /etc/cron.d/sysstat Asegúrate de que la tarea cron esté descomentada y configurada según tus necesidades. Por defecto, la recopilación de datos se programa cada 10 minutos: */10 * * * * root /usr/lib64/sa/sa1 1 1 Puedes ajustar el intervalo según tus preferencias.
Genial respuesta una vez puesto en marcha empezamos ejecutar comandos sar para indagar la carga del sistema en diferentes aspectos…
Esta utilidad permite recopilar, informar y analizar datos sobre la actividad del sistema, incluyendo el uso de CPU, memoria, E/S (entrada/salida), swap, disco, paginación, red, etc.
Vamos a crear prompts para que me genere informes sobre cada uno de estos aspectos.
“ChatGPT voy a arrancar un aplicación en Linux y quiero saber el impacto a nivel de consumo de CPU que va a tener. Créame el comando sar para esta prueba y poder observar el consumo de CPU por la ejecuc.ión de esta aplicación”
Respuesta de ChatGPT: Eso es en el presente.
sar -u 1 Este comando recopilará estadísticas de CPU cada segundo (-u 1) y mostrará el uso de CPU, carga promedio y más. Ejecuta tu aplicación: Inicia la aplicación que deseas probar. Mientras se ejecuta, sar continuará recopilando y mostrando estadísticas de CPU cada segundo. Detén la recopilación de datos de sar: Puedes detener la recopilación de datos presionando Ctrl + C. Después de esto, sar mostrará un resumen del uso de la CPU durante el período de recopilación. El comando y la salida se verán algo así: Esto en el presente:
En esta salida, %user representa el porcentaje de tiempo de CPU gastado en el espacio de usuario (aplicaciones), y %system representa el porcentaje de tiempo de CPU gastado en el kernel del sistema.
Observa los valores de %user y %system para evaluar el impacto en el consumo de CPU de tu aplicación durante la ejecución. También puedes ajustar el intervalo de recopilación (1 en el comando -u 1) según tus necesidades para obtener más o menos granularidad en los datos recopilados.
ChatGPT dime cómo evolucionó el consumo de CPU entre las 01:00am y 4:00am del 12 de enero de 2024. Dame por favor el comando sar que debo ejecutar.
Salida de ChatGPT: Esto es una pregunta “hacia el pasado”.
Evolución ficticia Linux 5.4.0-74-generic (hostname) 12/01/2024 _x86_64_ (1 CPU) 01:00:00 AM CPU %user %nice %system %iowait %steal %idle 01:10:00 AM all 10.00 0.50 5.00 0.00 0.00 84.50 01:20:00 AM all 12.00 0.75 6.00 0.10 0.05 81.10 01:30:00 AM all 15.00 1.00 7.50 0.20 0.10 76.20 ... 03:50:00 AM all 25.00 2.00 12.50 0.50 0.25 60.75 04:00:00 AM all 22.50 1.75 11.25 0.30 0.15 64.05
Una vez visto cómo se construye el comando sar para ver el consumo de CPU a través del prompt de ChatGPT, os toca a vosotros extrapolarlo los siguientes aspectos del rendimiento del sistema
Listado de comandos básicos de sar para monitorear diferentes aspectos del sistema, con ejemplos sencillos: 1. Uso de CPU: Comando: sar -u 1 Ejemplo: sar -u 1 Descripción: Muestra estadísticas de uso de CPU cada segundo. 2. Uso de Memoria RAM: Comando: sar -r 1 Ejemplo: sar -r 1 Descripción: Muestra estadísticas de uso de memoria RAM cada segundo. 3. Uso de Swap: Comando: sar -S 1 Ejemplo: sar -S 1 Descripción: Muestra estadísticas de uso de swap cada segundo. 4. Uso de Disco: Comando: sar -b 1 Ejemplo: sar -b 1 Descripción: Muestra estadísticas de E/S de bloque (disco) cada segundo. 5. Paginación: Comando: sar -B 1 Ejemplo: sar -B 1 Descripción: Muestra estadísticas de paginación cada segundo. 6. Estadísticas de Red: Comando: sar -n DEV 1 nota DEV seria eth0, eth1, enp0s3, etc Ejemplo: sar -n DEV 1 Descripción: Muestra estadísticas de red para cada interfaz de red cada segundo. Estos comandos te proporcionarán información útil sobre el rendimiento del sistema en tiempo real. Puedes ajustar el intervalo (1 en los ejemplos) según tus necesidades. Recuerda que la disponibilidad de ciertas métricas puede variar según tu sistema operativo y configuración específica.
Muy probablemente ya sar estará up & running en vuestro servidor. Yo personalmente tengo ya unos comandos sar preparados que los utilizo cuando hay una “crisis” las respuestas de ChartGPT complementan y refuerzan mi colección de comando sar para momentos en que el servidor esta impactado y quiero saber que pasó a nivel me memoria, cpu, swap, red, etc en el pasado.
Imagen generada con Bing:
Enlaces a las clases y los talleres:
Clase 1
https://growthhackingcourse.io/clases-chatgpt/
Clase 2
https://growthhackingcourse.io/clase-2-chatgpt-dominando-los-prompts/
Clase 3
https://growthhackingcourse.io/clase-3-chatgpt-automatizando-la-generacion-de-contenidos/
Taller1:
https://directo.growthhackingcourse.io/taller-chat-gpt-en-directo/
Taller2:
https://www.youtube.com/watch?v=-f2xdGwkO3k
129 episodes
كل الحلقات
×Bienvenue sur Lecteur FM!
Lecteur FM recherche sur Internet des podcasts de haute qualité que vous pourrez apprécier dès maintenant. C'est la meilleure application de podcast et fonctionne sur Android, iPhone et le Web. Inscrivez-vous pour synchroniser les abonnements sur tous les appareils.