InicioLinuxUnix Para Newbies - Capítulo 10: Troubleshooting

Unix Para Newbies - Capítulo 10: Troubleshooting

Linux5/29/2012
No estudiás informática? Sos un user regular de win? Igual te interesaría usar Unix? Con ésta serie de threads planeo presentarles el mundo Unix, con explicaciones sencillas. Supondré que ya tienen el sistema operativo instalado (acá hay una guía para usar linux desde virtual machines en win) o funcionando (quizás desde un Live CD?). Nótese que este tutorial es para empezar DE CERO con algún sistema Unix. Si ya tienen conocimientos básicos, se van a aburrir y no les va a servir. Capítulos anteriores: Unix para Newbies - Capítulo 1: Hola Unix! Unix para Newbies - Capítulo 2: Estructura del sistema Unix para Newbies - Capítulo 3: Utilizando comandos Unix para Newbies - Capítulo 4: Manejando directorios Unix para Newbies - Capítulo 5: Manejo de Archivos Unix para Newbies - Capítulo 6: Permisos Unix Para Newbies - Capítulo 7: Vi(m) Unix Para Newbies - Capitulo 8: Redirección de E/S Unix Para Newbies - Capitulo 9: Usuarios y grupos Qué es troubleshooting? Es la investigación de un problema, para llegar a la causa, y resolverla. Problema: No funciona tal programa Problema: No puedo escribir en tal directorio El por qué se descubre investigando. Podés correr ese programa? Está bien que no puedas escribir ahí? Probando algo, probando lo otro, podemos llegar a descartar causas hasta encontrar la raíz del problema y solucionarlo. Hago mis troubleshooting con consola/terminal, buscando información del sistema. Hay formas de hacerlo gráficamente, pero dónde está la diversión? . A lo que me refiero es, obviamente mis métodos no son los únicos! Empecemos... Virtual Terminals Ya tienen un lindo unix/linux instalado, seguramente tienen un sistema gráfico hermoso, pero de repente... crash! kde/gnome/insert graphic manager here murió. Por suerte la compu se copa y sigue recibiendo comandos via terminal. Pasar de modo gráfico a modo terminal es sencillo: apretamos ctrl+alt+ f1..f6 para usar las virtual terminals que provee el sistema. Ctrl+alt+f7 los devuelve a la interfaz gráfica. Es algo tan lindo como una pantalla negra con unas letritas blancas. Si! Una terminal. Qué está haciendo mi sistema? Resulta que escucho el cooler a toda velocidad, el mouse se mueve super lento, ejecuté un programita y nunca se abrió... La consola o terminal nos viene de 10 en esos casos. Probemos el comando top: Cuánta info! Lo que nos dice: top - 17:20:09 up 1:02, 0 users, load average: 1.23, 1.21, 1.16 La hora, cuánto hace que la compu está prendida, cuántos users la están usando y el load average de 1, 5 y 15 minutos. Tasks: 181 total, 1 running, 178 sleeping, 0 stopped, 2 zombie Cuántos procesos están corriendo y en qué estado están. Cpu(s): 8.7%us, 2.7%sy, 0.0%ni, 88.4%id, 0.2%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 3950752k total, 3823324k used, 127428k free, 55236k buffers Swap: 1952764k total, 7600k used, 1945164k free, 989988k cached Consumo de CPU y de Memoria. PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2536 law 20 0 1429m 706m 33m S 17 18.3 12:48.04 firefox 5138 law 20 0 2411m 868m 828m S 9 22.5 2:06.53 VirtualBox 2009 law 20 0 1881m 119m 21m S 6 3.1 2:48.15 cinnamon 2721 law 20 0 570m 120m 21m S 5 3.1 2:21.96 plugin-containe Qué procesos están corriendo e información al respecto. Y para qué quiero saber eso? Ejecuté un programa pero no se abrió. No se abrió o no muestra nada? Si aparece en la lista, está abierto, aunque por alguna razón, no muestra nada. Otro ejemplo, si un proceso se está comiendo toda la CPU, verían el Cpu id (idle, inactivo) en un porcentaje bajo, y en la lista de procesos, uno con %CPU bien alto. El firefox y el plugin-container (flash) son de hacer esas cosas. Será cuestión de matarlo y bajar algo mejor . Bueeeeno, matarlo y rogar que lo que sea que lo cause, no esté más cuando lo reinicies. (PD: ningún programa debería usar toda la memoria o cpu, si lo hace, a googlear la causa del problema y las soluciones). Más todavía. Digamos que la compu va bien lenta, pero vos tenés abierto lo que usás siempre, digamos un documento tipo excel, el browser, un mensajero, un programa de mail y un editor de texto. Usando top podemos ver las estadísticas del sistema y notamos que la cpu y la memoria están casi todas en uso. Mirando la lista de programas vemos que ninguno está abusando de esos recursos. Qué pasa? Es hora de actualizar tu compu, el uso que le das es demasiado exigente, necesita más cpu y/o ram. Más sobre el load average acá Procesos abusivos Bien, encontré que el firefox se abusa de mi generosidad, está usando todas las cpus, el resto funciona lento, un horror. Hora de matarlo! Volvamos a la imagen de arriba, miremos la línea del firefox: PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2536 law 20 0 1429m 706m 33m S 17 18.3 12:48.04 firefox De aquí nos sirve el PID, o id de Proceso. Recuerdan que el sistema no sabía que mi nombre era law, sino que me conocía como "usuario 1000". Para los procesos es lo mismo, no tienen nombre, tienen número. Firefox es el 2536, y así lo reconocerá el sistema. Salimos del top apretando la letra q. Para matar al firefox vamos a usar el comando kill: kill kill 2536 Bye bye, Firefox! Ah, pero no se murió! Obligalo, con la granada: kill -9 2536 El -9 lo fuerza a terminar ya, sin contemplaciones, y quizás dejando cosas por la mitad. Usar con precaución. Nótese que el user de Firefox es law (segunda columna en la imagen). Por esa razón pude matarlo, porque soy el usuario law. El usuario pepito no podrá matar procesos iniciados por mí, así como law no puede matar procesos iniciados por root. La única excepción es root, que es todo poderoso. Más comandos para manejar procesos Ya vimos top, que muestra información del sistema y una breve lista de procesos en ejecución. Process show: La lista en top está acotada. Con ps podemos ver todos los procesos. Para encontrar alguno, podemos utilizar grep: Ahí encontré el pid de todos los procesos bash que están corriendo. Para saber los argumentos más utilizados de ps, pueden consultar el manual (recuerdan? man ps). Los más usados: ps -ef : ver todos los procesos del sistema usando sintaxis standard. ps aux: ver todos los procesos del sistema usando sintaxis bsd. ps -ejH: ver el árbol de procesos (muestra el órden jerárquico de los procesos) ps -eo : muestra información seleccionada sobre los procesos Killall Mata todos los procesos de un programa por nombre. killall bash mataría los 2 procesos bash que se muestran arriba. Espacio en disco Saben que es lo que pasa cuando la máquina se queda sin disco? Lanza errores raros (true story bro!), principalmente avisandote que falló en hacer algo, lo cual para una persona normal NO se traduce como "no tengo espacio". Por suerte tenemos comandos que nos muestran cuánto espacio estamos usando: df o disk free. El -h le dice que use una notación amigable a los Humanos (GB o MB, según corresponda). Oh, no, el / está por llenarse, qué borro? Simplemente tratemos de encontrar la carpeta que más espacio ocupa. Nuestro amigo du, disk usage, nos ayudará. Como ven en la imagen, nos dice cuánto espacio ocupa el directorio donde estoy. Eso es útil porque la carpeta test está casi vacía. Qué pasa si hacemos du en /home/law, que está llena de porquería? Seh, no me sirve. Por suerte twikeando los argumentos podemos conseguir algo más util: du -hc --max-depth 1 -h es para usar formato Humano, -c es para que muestre los totales solamente, no cada archivo, y el --max-depth 1 le dice que muestre una sola carpeta de profundidad, o sea, que me muestre cuanto espacio ocupa ./test pero no ./test/dir1. Lindo, eh? Para descubrir carpetas a limpiar, como root (sino van a tener muchos errores de lectura por archivos que los usuarios comunes no pueden leer) se paran en el / y tiran ese comandito. Una vez que detectan la carpeta más pesada, en mi caso Win-backup, se meten y hacen lo mismo, hasta que encuentren archivos pesados Y QUE NO SIRVAN para borrar. Archivo de 5 GB, a borrar! Oops, error =( Es hora de borrar esa peli que hace años que no veo (hehehe). rm -fr peli.avi. ERROR! Dos cosas a chequear: 1. Tenés permisos para borrarlo? Acordate que si no sos root, vas a tener que ser el dueño para borrarlo. Cómo chequeamos? Uy, vago, lo vimos. Bueno, está bien: ls -l peli.avi 2. Si, tengo los permisos, por qué falla?? Seguramente algún programa lo está usando, como por ejemplo utorrent. Y cómo lo sabemos? Con el mágico comandito fuser: fuser me dijo que el proceso 7991 está usando el archivo. Con un ps me entero que en otra terminal estoy haciendo tail -f. Terminando ese proceso el archivo va a estar libre para ser borrado. Si nadie lo está usando, fuser no devuelve nada. Logs, como los quiero logs Los logs son archivos que acumulan los mensajes del sistema, pueden ser informativos, advertencias o errores. Son muy buenos ayudantes a la hora de encontrar errores. Los archivos están en la carpeta /var/log. Algunos son sólo legibles como root, así que deberían ser ese usuario o usar sudo. Los más interesantes: syslog o messages: Ahí encontrarás los mensajes del sistema no agrupados por aplicación. Por ejemplo veremos que tu modem te dio ip, que conectaste un usb, que se reinició un proceso por tal razón... auth.log: Logs de usuarios entrando y saliendo del sistema. Capaz tu problema es que alguien entró sin autorización? Acá vas a encontrar data. boot.log: Todo lo que sucede durante el boot. Graba problemas de hardware o de programas que no pudieron iniciarse. kern.log Todo lo que el kernel quiere que sepas. apt/dpkg.log: En sistemas que usan dpkg para instalar programas, acá encontrarás un registro de lo que instalás/desinstalás. yum/rpm.log: También regista instalación/desinstalación de sistemas que usan rpm o yum. mail.log: El logger del mail. Y cómo los leemos? Por suerte dedicamos un capítulo al manejo de archivos de texto. Y si no recuerdan... grep -i "error" blah.log -> Muestran las lineas que contienen la palabra "error" less blah.log -> Muestra todo el archivo y permite navegarlo con las teclas de arriba/abajo/space/enter vim blah.log -> Muestra y edita el archivo tail blah.log -> Muestra las últimas líneas tail -f blah.log -> Muestra las actualizaciones del archivo en tiempo real (MUY UTIL!) head blah.log -> Muestra las primeras líneas ls -l blah.log -> Muestra cuándo el archivo fue modificado por última vez. Ay, qué comando había corrido?? Encontré esta página re copada que me explica cómo hacer que mis letritas se vuelvan rosa. Total, después lo corro de nuevo y vuelve al color normal. 2 hs más tarde, cansad@ de las letritas rosa... Hora de volver a la normalidad. Ay, qué comando corrí? Yo lo había anotado, ay, cuál era la página? Encima las letritas rosa me dan dolor de cabeza !"#$%&%$#. Este comando es para vos! history te muestra todos los comandos que corriste. Combinado con tail y grep, sos imparable! Eso fue todo por esta clase, espero que les sea útil. Tenés algún otro consejo? Contalo que lo leo y lo agrego!
Datos archivados del Taringa! original
88puntos
866visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
1visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

R
Ramanathan🇦🇷
Usuario
Puntos0
Posts23
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.