La Ruta del SysAdmin. Aprendemos a usar la ayuda para los comandos

La ruta del SysAdmin 13 de may. de 2024

Por dónde comenzar como SysAdmin

Perfecto, has dado el paso, te has instalado GNU/Linux en tu equipo e incluso has configurado el escritorio y ya sabes abrir la terminal.

Incluso has averiguado que hay un atajo, y pulsando ALT+CTRL+T puedes abrir rápidamente la terminal y poder escribir comandos...

Además, te has dado cuenta que la consola te muestra un $ al final del prompt en el que puedes escribir comandos si eres un usuario normal y un caracter # si eres root (el super-administrador del sistema).

$ versus #

Pero, ahora te preguntas ¿qué comando puedo usar? ó ¿cómo saber lo que hace cada uno de ellos?

El comando "man"

Puede ser que hayas usado un comando y este no haga lo que quieras o no sepas exactamente todo lo que puede hacer.

Para solucionar las dudas de cualquier usuario y SysAdmin, GNU/Linux dispone del programa man, un programa que te muestra la información de una forma sencilla pero al mismo tiempo extensa de todo lo que hace cualquier comando.

Hace muchos años cuando un novato en Linux preguntaba por algún comando, los veteranos contestaban con RTFM (Read The F*cking Manual).
Yo en cambio siempre he contestado con: "el man es tu amigo"

Llevo más de veinte años con Linux, y todavía no he encontrado nada que no esté explicado en los manuales man.

Cómo se usa man
Para usar man (orden que invoca a "manual"), debes escribir despues de la orden, el comando sobre el que quieres obtener su manual.

Por ejemplo, para saber que hace el comando man podemos preguntarle a él mismo por su propio manual. Abre tu terminal y escribe:

man man

Te mostrará la siguiente pantalla:

Manual de "man"

Para leer el texto y desplazarte, simplemente usa las teclas de Flecha arriba y Flecha abajo.

Cuando haya leido todo lo que necesitabas simplmente pulsa q para salir.

Además, si te fijas, arriba del manual, al lado del comando, sobre el que has solicitado su manual aparece un número entre paréntesis:

Nº de sección del manual

¿Que significa este número?
Los manuales de todos los comandos estan organizados por secciones numeradas con el siguiente criterio:

1   Programas ejecutables u órdenes de la shell
2   Llamadas al sistema (funciones proporcionadas por el núcleo)
3   Llamadas a biblioteca (funciones dentro de bibliotecas de programas)
4   Dispositivos/Archivos especiales (se encuentran en /dev)
5   Formatos de archivo y convenios. Ej: /etc/passwd
6   Juegos
7   Miscelánea, incluidos paquetes de macros y otros convenios. Ej: man(7)
8   Órdenes de administración del sistema (normalmente solo para root)
9   Rutinas del núcleo [No estándar]

¿Tengo que usar estos números para usar man?
No. Por defecto man localiza el primer manual del comando sobre el que le preguntas y te lo mostrará.
Si existiese otro manual relacionado con el comando, al final del manual verías si está disponible en otra sección aparte de la que te está mostrado:

Otra sección con otro manual del comando

Un ejemplo de ello puede ser printf que puede ser tanto un comando para usar en la consola y estará en la sección 1. Pero a su vez es también una funcion que se puede usar para programar en C y del que tienes también su manual en la sección 3

Forzar Secciones en man
Para forzar a man para que muestre una sección u otra hay usar la siguiente sintaxis: man Nº comando

# Mostrar el primer manual que se localice en una sección
man printf

# Forzar que muestre el manual de la sección 1 (comandos)
man 1 printf

# Forzar que muestre el manual de la sección 3 (funciones)
man 3 printf


man 1 printf versus man 3 printf
Nota: Si has instalado tu equipo en otro idioma que no sea el inglés, seguramente te aparezca (si está disponible) el manual en tu propio idioma. Si no lo encuentra, se mostrará en inglés.

whatis: El man resumido

Muchas veces, no quieres leerte todo lo que puedes hacer con un comando, ni todos los parámetros que puedes usar.

Para saber lo que hace un comando de forma simple, sin tener que lanzarlo "a la aventura", sin saber que hace, existe whatis ¿qué hace?

Es tan sencillo como escribirlo y a continuación indicar el comando sobre el que tienes dudas:

whatis dcb

dcb (8)              - show / manipulate DCB (Data Center Bridging) settings

Si el comando hace lo que esperabas, y quieres saber con mayor detalle como usarlo... ya estás preparado para utilizar el comando man.


Parámetros de ayuda en los comandos

Generalmente todos los comandos aceptan el parámetro --help que permite que muestren un texto de ayuda mínimo sobre lo que hacen o cómo usarlo, esta información está almacenada internamente en el propio programa.

Otros comandos pueden disponer o no del parámetro --usage que mostrará los parámetros y opciones que puedes usar al ejecutar un programa.

¿Pero qué comando necesito?

Pero si estoy empezando como usuario o no recuerdo que comando hace lo que necesito... ¿cómo lo localizo?

De nuevo GNU/Linux al rescate, que nos provee del comando apropos que nos va buscar dentro de todos los manuales de nuestro equipo, por la acción que queramos realizar.

La forma de usarlo es: apropos -s N "que queremos hacer"

Al usar  -s N indicamos en la sección que queremos buscar.
Si no escribimos -s Sección nos mostrara la información que encuentre en cualquiera de todas las secciones.

Por ejemplo, si queremos saber que comandos (sección 1) podemos usar para gestionar el bluetooth y que comando usar para imprimir un fichero ("print file") podemos escribir en la terminal:

apropos -s 1 bluetooth

 blueman-applet (1)   - a tray applet for managing bluetooth
 blueman-manager (1)  - bluetooth device manager
 blueman-sendto (1)   - application for sending files to bluetooth devices
 blueman-services (1) - Configure local bluetooth services
 bluetooth-sendto (1) - GTK application for transfer files over Bluetooth
 bluetoothctl (1)     - interactive bluetooth control tool
 btmon (1)            - Bluetooth monitor
 ciptool (1)          - Bluetooth Common ISDN Access Profile (CIP)
 gatttool (1)         - tool for Bluetooth Low Energy device
 hciconfig (1)        - Configure Bluetooth devices
 hcitool (1)          - Configure Bluetooth connections
 hex2hcd (1)          - Broadcom Bluetooth firmware converter
 hid2hci (1)          - Bluetooth HID to HCI mode switching utility
 mpris-proxy (1)      - Bluetooth mpris-proxy

apropos -s 1 "print file"
 lp (1)               - print files
 tac (1)              - concatenate and print files in reverse

Ayuda en formato "info"

El proyecto GNU dispone de sus propios manuales,  formato y comando para leerlo, se trata del comando info

La ayuda que usa info se organiza por "nodos" y es un poco "poco intuitivo", aunque puedes revisarlo para obtener información extra sobre comandos, además las teclas de "navegación" son un  poco liosas.
Para salir simplemente pulsa la tecla q

Sin embargo tiene la ventaja es que desde dentro de él puedes saltar entre "enlaces" que te permiten recorrer toda la documentación existente.

Como ejercicio, prueba a ver su propia información con el comando:

info info

Documentación mediante info

CHANGELOG, NEWS y README

Puede ser que un momento determinado no tengas claro si algun programa tiene alguna nueva funcionalidad, o se ha deprecado alguna opción que usabas (dejado de funcionar) o incluso que algún parametro no aparece a la hora de invocarlo.

Para saber toda la Historia de cambios de un programa, existe un fichero que tiene por nombre CHANGELOG.

En otros casos, puede que se hayan incluido novedades en su funcionamiento. Generalmente se deja esta información en los ficheros NEWS

Si necesitas información sobre como instalar o configurar una aplicación, el desarrollador seguramente no lo haya puesto en el manual (man), ya que puede ser muy extenso, en ese caso encontrarás esa información en el fichero README

Todos estos ficheros los puedes encontrar, para cada aplicación, en la ruta:

/usr/share/doc/APLICACION/

Localizar la web del autor de un programa

Además si quieres saber más sobre un programa, como por ejemplo si dispone de una web en la que encontrar más información, o si dispone de un repositorio Git, o quieres localizar una serie de FAQ's: Frecuently Asked Questions (Preguntas frecuentes), puedes revisar si dispone de web en el fichero /usr/share/doc/copyright

El LOG de los demonios

Ahora ya sabes encontrar el porqué un comando puede no estar haciendo exactamente lo que quieres, simplemente revisando su manual.

Sin embargo te puedes encontrar con que algunos demonios (servicios) están realizando ciertas tareas, pero no sabes exactamente lo que hacen "por debajo" mientras se ejecutan.

demonio: Programa que no se lanza por el usuario directamente y que se ejecuta en segundo plano esperando a que se cumplan ciertas condiciones.
Para identificar programas que se ejecutan como demonios, generalmente suelen terminar con la letra d

Ejemplo: httpd - Se trata del demonio que sirve páginas web, se ejecutan sus procesos de entrega de páginas, sólo cuando recibe una solicitud web, el resto del tiempo puede estar sin hacer nada.
Otros ejemplos de demonios: sshd (servicio de conexión ssh), lpd (servicio de "line printer" o impresión), udevd, upowerd, etc...

Descubrir si un demonio, tiene un comportamiento incorrecto o funciona a la perfección es complicado de ver directamente, para facilitar esta tarea es por la que se utilizan los LOGs de los demonios.

Los ficheros de LOG se encargan de almacenar los resultados de las ejecuciones que se disparan, en cada uno de ellos cuando son invocados y guardan en esos ficheros fecha y hora en que se ejecuto cada hilo del proceso, y tanto los posibles errores como las ejecuciones correctas.
Por defecto la extensión que se suele usar es .log

Los ficheros .log se generan por lo general en la ruta /var/log y algunos tienen su propia ruta en donde almacenan o pueden tener su propio directorio dentro de /var/log/aplicacion/ en la que puedes encontrar uno o varios ficheros de log.

Configuración de los demonios

Generalmente cada demonio dispone de su fichero de configuración.

En él se indica que acciones debe de realizar para ciertos tipos de peticiones, que acciones no debe permitir y que tipo de logs debe de generar cuando sucedan ciertas acciones.

Los ficheros de configuración de los demonios suelen crearse dentro del directorio /etc y tener su propio directorio: /etc/aplicacion

Auditoria de Log

Una de las labores más importantes de un SysAdmin, es poder auditar los errores de los demonios que se ejecutan en sus servidores.

Es imporantes comprobar que todo está funcionando cómo debe, detectar errores y corregirlos, y auditar posibles fallos que puedan afectar a la seguridad de los servidores administrados.

El tamaño de ciertos ficheros de LOG puede ser abrumador al contener cientos de líneas y no ser fáciles de interpretar, para facilitar la tarea a los administradores de sistemas, existen herramientas que realizan el trabajo duro por nosotros, recopilan la información relevante y nos la muestran.

Herramientas de análisis de Log

Algunas herramientas para iniciarte en el análisis de Logs que puedes usar son:

analog - Analizador de registros del servidor web
Analog es un procesador rápido de archivos de registros que genera informes de estadísticas de uso de los servidores web.
Sus características son:

  • Rápido: puede procesar millones de líneas por minuto.
  • Escalable.
  • Flexible: la salida predeterminada está preparada para la mayoría de las necesidades, aunque hay muchas opciones y 32 estilos de informes alternativos.
  • Salida internacionalizada.
  • Salida en HTML (cumple con los estándares).
  • Gestiona muchos formatos de archivos de registro.
  • Se puede usar mediante una interfaz de línea de órdenes o una interfaz web.

webalizer - Programa de análisis de registros del servidor web
Webalizer fue diseñado para escanear archivos de registro del servidor web en varios formatos y producir estadísticas de su uso en formato HTML para su visualización a través de un navegador.
Webalizer produce estadísticas anuales, mensuales, diarias y horarias.

Puede generar estadisticas para mostrar la situación general, uso, uso por día y hora, uso por sitios visitados, URL, agentes de usuario (navegadores), referentes y país.

logcheck - Verifica el registro del sistema para detectar entradas inusuales
Logcheck analiza el registro del sistema en busca de entradas inesperadas que podrían indicar problemas o cuestiones de seguridad.
Las logs del sistema que se encarga de analizar son los producidos por systemd-journald, rsyslog y otros como system-log-dameon

Los datos se comparan con una base de datos personalizable de expresiones regulares (como la proporcionada por el paquete logcheck-database) para identificar mensajes habituales. Cualquier cosa que no se identifique como rutinaria se notifica al administrador del sistema.

Etiquetas

Luis GuLo

🐧 SysAdmin GNU/Linux - 🐳 Docker - 🖥️ Bash Scripting - 🐪 Perl - 🐬 MySQL - 👥 Formador de TI - 👥 Formador de SysAdmin's - 💢 Ansible - ☁️ Cloud Computing - ❤️ Debian GNU/Linux