Tabla de Contenido
La Consola y/o el Shell
Existen distintos intérpretes de comandos en el mundo Unix: csh, bash, tsh, ksh. Salvo pequeñas diferencias todos son parecidos. En este documento partimos sobretodo de bash, ya que está muy extendido a través de Linux.
Asi como windows lo vemos como un entorno con ventanas, programas, etc, unix lo debemos ver como conformado por procesos y archivos.
Los dispositivos como el disco, el cdrom, la pantalla, están representados como un archivo en el sistema linux, dentro de /dev. Los sockets de comunicación son archivos. Los directorios son archivos. Y por supuesto los archivos son archivos.
Redirección de Entrada/Salida
- > : Con este símbolo podemos redirigir la salida estandar de un comando a un archivo. Téngase en cuenta una cosa. Si decimos archivo siempre lo vamos a decir de manera genérica, puede ser un archivo de texto o la pantalla de terminal, ahí cabe TODO.
- >> : Con esto redirigimos el resultado a un archivo, pero sin sobrescribirlo, lo que hacemos es escribir al final de este (append en ingles).
- < : Con esto redirigimos el contenido del archivo a un programa. Se usa para utilizar el contenido del archivo como input de un comando.
- << END : Esta redirección se utiliza para iniciar el paso de parámetros a un programa, y se termina cuando escribimos “END” o cualquier otra palabra que hayamos especificado al inicio del comando.
Diagnóstico Básico del Sistema
Para diagnosticar el estado de un servidor Linux de manera rápida podemos ejecutar los siguientes comandos:
Por consola: basta con utilizar 5 comandos básicos, en el siguiente orden:
- uname -a : Nos dice la version de kernel, procesador, y nombre de sistema
- df : Nos muestra la ocupación del disco duro.
- free : Nos muestra el uso de la memoria
- ps -aux : Nos muestra los procesos en curso
- netstat -a : Nos muestra las conexiones de red actuales
Otro programa muy útil para el diagnostico del sistema y las conexiones de red es IPTRAF que se ejecuta como:
iptraf
o
/usr/bin/iptraf
Estado del Disco:
Lo normal es que de un dia para otro no aumente ni en un punto porcentual, a no ser que tenga algun servicio concreto de estadisticas. Si llega al 90% hay que empezar a barrer el sistema de archivos, localizar archivos grandes, etc.
Estado de los Procesos:
Normalmente veremos una serie de procesos que van desde el ID 1 al 600-700, muchos de los cuales comienzan por “[k”. Todos ellos son los iniciados al arrancar del sistema. El resto son servidores iniciados posteriormente. El estado de los procesos en marcha suele mostrar siempre el mismo aspecto, aunque cada servidor tendrá uno distinto. Conviene conocerlo. En cuanto a la ocupación del CPU ningún servicio suele ocupar más de un 10%. Todo lo que tenga valores como 40% o más se consideran niveles anormales; pueden tratarse de generadores de estadísticas. Un programa util para ver los porcentajes es top.
Estado de la Memoria:
Mientras quede RAM libre no hay problema. Un servidor Linux incluso puede aguantar usando SWAP.
Resolución de Problemas
En general, los problemas pueden venir de tres partes:
- Conectividad: Problemas de conexión a red.
- Servidores: Servicios que no funcionan correctamente, no arrancan, etc.
- Sistema: Discos duros llenos, errores de dispositivos, kernel-panic, etc.
Analicemos cada una de estas partes:
1.- Conectividad:
Hay que asegurarse de que hay conectividad. Para ello realizamos los siguientes pasos:
- Hacer un ping a la máquina desde otra externa.
- Intentar acceder a alguno de los servicios vía red (Ejm: SSH puerto 22). Algunas máquinas pueden tener cerrado el ping o los ICMP en general.
Si no hay conectividad entonces es un problema que debe solventarse a nivel de las redes y/o verificar las tarjetas de red interna.
2.- Servidores:
Existen varios modos para verificar que los servicios estan en marcha, y los más prácticos son los siguientes:
- Comprobar que el proceso está en marcha (ps -axf | grep nombre_proceso)
- Comprobar que el puerto que utiliza está abierto (netstat -ln | grep puerto)
- Comprobar que el puerto responde correctamente (telnet localhost 25, por ejemplo)
- Comprobar que está generando logs (en /var/log)
- Comprobarlo con el script de inicio (/etc/rc.d/init.d/servicio status)
A veces puede ocurrir que el proceso del servicio se pare nada mas iniciarse, por eso conviene comprobar dos veces que el proceso está en marcha.
3.- Procedimiento General de Soluciones:
Este procedimiento describe el proceso genérico de resolución de problemas de cualquier servidor Linux:
3.1. Verificar si el servicio está en marcha:
Se puede hacer con:
service <servicio> status
/etc/rc.d/init.d/servicio status
ps -axf | grep servicio
netstat -ln | grep puerto_servicio
telnet localhost puerto_servicio
3.2. Si el servicio está parado, iniciarlo directamente con:
/etc/rc.d/init.d/servicio start
3.3. Verificar dos veces si el servicio está en marcha realmente.
3.4. En cualquier caso, si está en marcha o parado, verificar los logs correspondientes al servicio para comprobar errores.
4. Según la información que nos den los logs actuar en consecuencia.
De todas formas, cada servicio Linux tiene sus pecualiaridades, por eso se deben estudiar detalladamente.
A su vez, debe tenerse en cuenta que los servicios dependen a veces de otros servicios externos o internos, cosa que a veces puede provocar malentendidos.