La Ruta del SysAdmin. Aprendemos a usar la ayuda para los comandos
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).
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:
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:
¿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:
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
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
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 letrad
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.