Ejemplos de consejos y trucos de comandos de comandos útiles - Parte 6

Ejemplos de consejos y trucos de comandos de comandos útiles - Parte 6

En este artículo, analizamos la obtención de información básica de configuración de hardware, sistema y sistema operativo directamente desde el símbolo del sistema en su terminal. Tener esta información y saber dónde encontrarla, a menudo ayuda a configurar un sistema, investigar soluciones óptimas de hardware y software, y generalmente tener el control del sistema Linux que posee o administra.

Nos centraremos principalmente en la información diaria, el tipo que se requiere regularmente. Ir más en profundidad a menudo requiere algunas búsquedas en línea para definir primero la alineación, y luego a menudo requiere habilidades adicionales para interpretar los resultados o la producción mostradas.

Por ejemplo, no veremos la salida de vmstat, Aunque descubriremos cómo averiguar qué CPU está en su sistema sin abrir el capó. También veremos algunas variables de límite de recursos básicos y preocupaciones circundantes. El público objetivo para este artículo es, por lo tanto, principiante a mediano avanzado.

Este artículo es parte de la serie de consejos de línea de comandos y trucos de Bash.

En este tutorial aprenderás:

  • Consejos, trucos y métodos de comandos de comandos útiles
  • Cómo interactuar con la línea de comandos de Bash de manera avanzada
  • Cómo afilar sus habilidades de Bash en general y convertirse en un usuario bash más competente
Ejemplos de consejos y trucos de comandos de comandos útiles - Parte 6

Requisitos y convenciones de software utilizados

Requisitos de software y convenciones de línea de comandos de Linux
Categoría Requisitos, convenciones o versión de software utilizada
Sistema Independiente de la distribución de Linux
Software Línea de comando bash, sistema basado en Linux
Otro Cualquier utilidad que no esté incluida en el shell bash de forma predeterminada se puede instalar utilizando sudo apt-get instalación de utilidad de utilidad (o yum instalación para sistemas basados ​​en redhat)
Convenciones # - requiere que los comandos de Linux se ejecuten con privilegios raíz directamente como un usuario raíz o mediante el uso de sudo dominio
$-Requiere que los comandos de Linux se ejecuten como un usuario regular no privilegiado

Ejemplo 1: Qué CPU hay en su sistema?

A menudo, queremos descubrir rápidamente qué es la CPU en el sistema, sin abrir la caja. Abrir la computadora física también es un poco difícil si está administrando un servidor en el otro lado del planeta. Descubrir los detalles de la CPU es fácil y directo:

$ Cat /Proc /Cpuinfo | Grep 'Nombre del modelo' | Nombre del modelo Head -N1: Intel (R) Core (TM) I9-9900K CPU @ 3.60GHz $ CAT /Proc /CPUInfo | Grep 'Nombre del modelo' | WC -L 16 

En el primer comando, consultamos la dinámica /proc/cpuinfo Archivo que enumera la CPU actual detectada por el sistema operativo. Hay 16 líneas (como se ven en el segundo comando) de exactamente la misma salida, por lo que solo enumeramos la primera línea usando el cabeza -n1 dominio. Tenga en cuenta que también podríamos escribir estos comandos de la siguiente manera:

$ Grep 'Nombre del modelo' /Proc /Cpuinfo | Nombre del modelo Head -N1: Intel (R) Core (TM) I9-9900K CPU @ 3.60GHz $ GREP 'Nombre del modelo' /Proc /Cpuinfo | WC -L 16 


Sin embargo, es posible que desee usar el gato método para explorar la salida completa (Cat /Proc /CPuinfo) ya que se muestra mucha información interesante sobre su procesador. El recuento 16 se debe a que hay 16 hilos en esta CPU en particular, por lo que el sistema operativo lo ve como 16 procesadores individuales, o hilos, para usar.

Descubrir su sistema operativo y liberación

A menudo, al administrar un servidor remoto, queremos asegurarnos de que esté parcheado a la revisión correcta de un sistema operativo. Para obtener más información qué sistema operativo está utilizando su máquina y en qué revisión se encuentra, simplemente ejecute Cat /etc /*liberar*:

$ cat /etc /* liberar* distribu_id = ubuntu distribuy_release = 20.04 distribu_codename = focal distribuy_description = "Ubuntu 20.04.1 lts "name =" Ubuntu "versión =" 20.04.1 lts (fossa focal) "id = Ubuntu id_like = Debian bonito_name =" Ubuntu 20.04.1 lts "versión_id =" 20.04 "home_url =" https: // www.ubuntu.com/"soport_url =" https: // ayuda.ubuntu.com/"bug_report_url =" https: // bugs.plataforma de lanzamiento.net/ubuntu/"privacy_policy_url =" https: // www.ubuntu.com/legal/términos-y-policies/privacy-policy "versión_codename = focal ubuntu_codename = focal 

Para comparar, aquí está la salida del mismo comando en una Raspberry Pi 4:

$ Cat/etc/* rente* bittle_name = "raspbian gnu/linux 10 (buster)" name = "raspbian gnu/linux" version_id = "10" versión = "10 (buster)" versión_codeName = buster id = raspbian id_like = Debian = Debian Home_url = "http: // www.raspbiano.org/"support_url =" http: // www.raspbiano.org/raspbianforums "bug_report_url =" http: // www.raspbiano.org/raspbianbugs " 


Una vez que recuerdes esta taquigrafía, pronto te encontrarás usando muchas situaciones. Los archivos reales que se muestran aquí, al menos en Ubuntu, son: /ETC/LSB LAGO y /Etc/OS Librase. En Raspbian solo hay /Etc/OS Librase.

Límites operativos vs sistema

Muchos límites del sistema operativo se implementan de forma predeterminada en Linux. Se establecen de manera astuta, ya que a menudo no se encontrará con ellos hasta que sea un DevOps o un ingeniero similar que maximice el rendimiento de un conjunto de servidores remotos.

Cambiar estas variables del sistema operativo requiere cierto conocimiento sobre cada uno de ellos, y establecerlas a veces puede requerir algunas pruebas para establecer límites razonables.

Otra consideración aquí es que los límites del sistema se pueden alcanzar mucho antes de que se alcance un límite configurado del sistema operativo, y esto es especialmente cierto si establece dichos límites del sistema operativo a un número muy alto. Esta es también la razón por la cual dichos límites del sistema operativo existen en primer lugar: limitar el sistema operativo de perder el control sobre un recurso del sistema físico (disco, RAM, memoria, CPU) debido a un límite / límite mal administrado.

Por lo tanto, cambiar los límites basados ​​en un sistema operativo viene con varios riesgos. No solo es bastante fácil establecerlos demasiado, lo que resulta en el sistema operativo que a menudo pierde el control de recursos específicos, sino que cambiar algunas variables también conlleva algunos riesgos de seguridad.

Por ejemplo, digamos que un hacker arrojaría una bomba de bifurcación al sistema. Una bomba de bifurcación no es una bomba real, sino más bien un exploit basado en software que da como resultado que el sistema bifule repetidamente nuevos proyectiles e hilos hacia un proceso de organización de 'bomba de bifurcación'. Si el número de horquillas permitidas se hubiera modificado de alguna manera cambiando una o más variables del sistema, el sistema pronto podría quedarse sin recursos de CPU que intenten tener una bifurcación de infinidad.

Otro aspecto a considerar aquí es cuán seguro es el servidor o la estación de trabajo que está administrando. Si se encuentra en una zona DMZ en un centro de datos, de lo contrario aislado de otros servidores, y se utiliza solo para tareas de bajo privilegio (como las pruebas), puede ser bastante aceptable establecer límites bastante altos. Si ese mismo servidor estuviera presionando el código de producción y está firmando paquetes de lanzamiento, se recomendaría mucho más cuidadoso la administración de recursos del sistema.

Puede ver cómo cambiar estas variables requiere cierta experiencia y experiencia. Aún así, la mayoría de ellos son fáciles de entender y tienen nombres en inglés comunes.

Los más comunes se establecen en /etc/seguridad/límites.confusión. Por ejemplo, para aumentar en gran medida el número máximo de archivos abiertos al 300000, puede agregar las siguientes líneas a /etc/seguridad/límites.confusión:

* nofile suave 300000 * nofile duro 300000 


Esto se abrirán 300K archivos a la vez. El máximo que se puede configurar para estas variables es 1048576.

Tenga en cuenta que hay una diferencia entre los límites 'suaves' y 'duros': los límites duros solo pueden elevarse aún más por raíz acceso a nivel, mientras que cualquier proceso puede reducir el límite. Esto es excelente para fines de seguridad, ya que los procesos no raíz no podrán sobrepasar un límite. Un proceso dado puede cambiar un límite suave en cualquier momento.

Hay muchas otras configuraciones similares que se pueden cambiar desde este archivo. Para tener una idea amplia, puedes usar ulimit -a Para ver los límites aplicables a su sistema en este momento.

El siguiente archivo más destacado cuando se trata de recursos del sistema de ajuste es /etc/sysctl.confusión. En este archivo, es posible Finetune muchos parámetros del kernel. Por ejemplo, para establecer el número máximo de PID (identificadores de proceso) a 500k y la intercambio de su sistema (con qué facilidad el sistema operativo intercambiará información basada en la memoria con información basada en el disco, también llamado 'intercambio') a 5 (una configuración que restringe el intercambio considerablemente), puede agregar lo siguiente a /etc/sysctl.confusión:

núcleo.pid_max = 500000 VM.Swappiness = 5 

No recomendamos implementar ninguna de las configuraciones que se muestran anteriormente sin más investigación, y la sintonización, específicamente a su sistema. A menudo, elevar una variable a una configuración más alta no producirá ningún problema, a menos que ocurra un evento imprevisto, como el ejemplo del hacker discutido anteriormente.

Conclusión

En este artículo, observamos cómo nuestro sistema operativo mantiene los recursos bajo control y cuáles son los principales archivos de configuración en relación con esto. También descubrimos cómo averiguar qué CPU está en el sistema y qué sistema operativo y su versión estamos utilizando. Conociendo estas cosas básicas, se pueden explorar más en configuraciones específicas realizadas en /etc/seguridad/límites.confusión y /etc/sysctl.confusión y administrar los sistemas basados ​​en Linux con más confianza. Disfrutar!

Tutoriales de Linux relacionados:

  • Ejemplos de consejos y trucos de comandos de comandos útiles - Parte 3
  • Una introducción a la automatización, herramientas y técnicas de Linux
  • Ejemplos de consejos y trucos de comandos de comandos útiles - Parte 1
  • Ejemplos de consejos y trucos de comandos de comandos útiles - Parte 2
  • Ubuntu 20.04 trucos y cosas que quizás no sepas
  • Ejemplos de consejos y trucos de comandos de comandos útiles - Parte 4
  • Ejemplos de consejos y trucos de comandos de comandos útiles - Parte 5
  • Cosas para instalar en Ubuntu 20.04
  • Ubuntu 20.04 Guía
  • Mastering Bash Script Loops