martes, julio 27, 2010

Guía de referencia de comandos Unix y Linux

Tomado de: http://www.pello.info/referencia_linux.html


1. INTRODUCCIÓN
2. REFERENCIA DE COMANDOS UNIX-LINUX
3. COMBINACIONES ÚTILES
4. DIAGNOSTICO DE SISTEMA
5. RESOLUCION DE PROBLEMAS
6. NOTAS, ACTUALIZACIONES
INTRODUCCIÓN
Nota: Este guía no es para leer de forma seguida, este guía pretende ser una referencia de comandos Unix/Linux que se pueda consultar en cualquier momento. No pretende ser una guía exhaustiva, sino una referencia que sirva como recordatorio de los comandos más utilizados.
El shell:
Existen distintos interpretes de comandos en el mundo Unix: csh, bash, tsh, ksh,.. pero salvo pequeñas diferencias todos son parecidos. En este documento partimos sobretodo de bash, ya que esta muy extendido a través de Linux.
Asi como windows lo vemos como un entorno con ventanas, programas, etc,.. unix lo debemos ver como lo siguiente:
Unix esta formado por procesos y ficheros.
Y no hay nada más. Los dispositivos como el disco, el cdrom, la pantalla, esta representado como un fichero en el sistema linux, dentro de /dev. Los sockets de comunicación son ficheros. Los directorios son ficheros. Los ficheros son ficheros.
-Redirección de entrada/salida
> : con este símbolo podemos redirigir la salida estandar de un comando a un fichero. Téngase en cuenta una cosa. Si decimos fichero siempre lo vamos a decir de manera genérica, puede ser un fichero de texto o la pantalla de terminal, ahí cabe TODO.
>> : con esto redirigimos el resultado a un fichero, pero sin sobrescribirlo, lo que hacemos es escribir al final de este (append en ingles).
< : con esto redirigimos el contenido del fichero a un programa. Se usa para utilizar el contenido del fichero como input de un comando.
<< END : este 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 DE SISTEMA

Cómo diagnosticar el sistema en 20 segundos:

Para diagnosticar el estado de un Linux de manera rápida:
Por consola: basta con utilizar 5 comandos básicos, en el siguiente orden:
0. uname -a : nos dice la version de kernel, procesador, y nombre de sistema
1. df : nos muestra la ocupación del disco duro.
2. free : nos muestra el uso de la memoria
3. ps -aux. : nos muestra los procesos en curso
4. netstat -a : nos muestra las conexiones de red actuales
Otro programa muy util para el diagnostico del sistema y las conexiones de red sería IPTRAF
que se ejecuta como iptraf o /usr/bin/iptraf.
ESTADO DE 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 o BBDD. Si llega al 90% hay que empezar
a barrer el sistema de ficheros, localizar ficheros grandes, etc.
ESTADO DE 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 tendra uno distinto. Conviene conocerlo. En cuanto a la ocupacion de la CPU
ningun servicio suele ocupar mas de un 10% suele tener esos picos). Todo lo que tenga valores como
40% o mas se consideran niveles anormales; puede tratarse de generadores de estadisticas.Un programa
UTIL para ver los porcentajes es top.
ESTADO DE MEMORIA: mientras quede RAM libre no hay problema. Un servidor Linux incluso puede
aguantar usando SWAP.


RESOLUCION DE PROBLEMAS
En general, los problemas pueden venir de tres partes:
1.- Conectividad: problemas de conexión a red.
2.- Servidores: servicios que no funcionan correctamente, no arrancan, etc..
3.- Sistema: discos duros llenos, errores de dispositivos, kernel-panic, etc..
1.- Conectividad
Hay que asegurarse de que hay conectividad. Para ello seguimos los siguientes pasos:
- Un ping continuo a la máquina.
- Intentar acceder a alguno de los servicios del equipo (23, 22). Algunos máquinas pueden tener
cerrado el ping o los ICMP en general.
Si no hay conectividad, entonces es un problemas que deben solventar los responsables de las
conexiones, y determinar si es responsabilidad nuestra
2.- Servidores
Existen varios modos de verificar que los servicios estan en marcha,
y los más practicos son los siguientes:
-Comprobar que el proceso esta en marcha (ps -axf | grep nombre_proceso)
-Comprobar que el puerto que utiliza esta abierto (netstat -ln | grep puerto)
-Comprobar que el puerto responde correctamente (telnet localhost 25 por ejemplo)
-Comprobar que esta 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 esta en marcha.
Proceso GENERAL de resolucionEste proceso describe el proceso genérico de resolución de problemas
de cualquier servidor de Linux:
0. Verificar si el servicio esta 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
1. Si el servicio esta parado, iniciarlo directamente con:
/etc/rc.d/init.d/servicio start
2. Chequear dos veces si el servicio esta en marcha realmente.
3. En cualquier caso, si esta en marcha o parado, chequear los logs
correspondientes al servicio para verificar o 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
describen por separado a continuación.
Notas: debe tenerse en cuenta que los servicios dependen a veces de otros servicios
externos o internos, cosa que a veces puede provocar malentendidos.


REFERENCIA DE COMANDOS UNIX-LINUX

La siguiente lista de comandos pretende ser de utilidad como referencia rapida
para utilizar comandos de sistema. Se ha agrupado en dos: los comandos
de sistema corrientes y los relacionados con la administracion.
Comando

ls
Descripción: =list. listar contenido de directorios.
Ejemplos: ls, ls -l, ls -fl, ls --color
cp
Descripción: =copy. copiar ficheros/directorios.
Ejemplos:cp -rfp directorio /tmp, cp archivo archivo_nuevo
rm
Descripción: =remove. borrar ficheros/directorios.
Ejemplos: rm -f fichero, rm -rf directorio, rm -i fichero
mkdir
Descripción: =make dir. crear directorios.
Ejemplos: mkdir directorio
rmdir
Descripción: =remove dir. borrar directorios, deben estar vacios.
Ejemplos: rmdir directorio
mv
Descripción: =move. renombrar o mover ficheros/directorios.
Ejemplos: mv directorio directorio, mv fichero nuevo_nombre, mv fichero a_directorio
date
Descripción: gestion de fecha de sistema, se puede ver y establecer.
Ejemplos: date, date 10091923
history
Descripción: muestra el historial de comandos introducidos por el usuario.
Ejemplos: history | more
more
Descripción: muestra el contenido de un fichero con pausas cada 25 lineas.
Ejemplos: more fichero
grep
Descripción: filtra los contenidos de un fichero.
Ejemplos:cat fichero | grep cadena
cat
Descripción: muestra todo el contenido de un fichero sin pausa alguna.
Ejemplos: cat fichero
chmod
Descripción: cambia los permisos de lectura/escritura/ejecucion de ficheros/directorios.
Ejemplos: chmod +r fichero, chmod +w directorio, chmod +rw directorio -R, chmod -r fichero
chown
Descripción: =change owner. cambia los permisos de usuario:grupo de ficheros/directorios.
Ejemplos: chown root:root fichero, chown pello:usuarios directorio -R
tar
Descripción: =Tape ARchiver. archivador de ficheros.
Ejemplos: tar cvf fichero.tar directorio , tar xvf fichero.tar, tar zcvf fichero.tgz directorio, tar zxvf fichero.tgz
gunzip
Descripción: descompresor compatible con ZIP.
Ejemplos: gunzip fichero
rpm
Descripción: gestor de paquetes de redhat. Para instalar o actualizar software de sistema.
Ejemplos: rpm -i paquete.rpm, rpm -qa programa, rpm --force paquete.rpm, rpm -q --info programa
mount
Descripción: montar unidades de disco duro, diskette, cdrom.
Ejemplos: mount /dev/hda2 /mnt/lnx, mount /dev/hdb1 /mnt -t vfat
umount
Descripción: desmontar unidades.
Ejemplos: umount /dev/hda2, umount /mnt/lnx
wget
Descripción: programa para descargar ficheros por http o ftp.
Ejemplos: wget http://www.rediris.es/documento.pdf
lynx
Descripción: navegador web con opciones de ftp, https.
Ejemplos: lynx www.ibercom.com, lynx --source http://www.ibercom.com/script.sh | sh
ftp
Descripción: cliente FTP.
Ejemplos: ftp ftp.ibercom.com
whois
Descripción: whois de dominios.
Ejemplos: whois ibercom.com
who
Descripción: muestra los usuarios de sistema que han iniciado una sesion.
Ejemplos: who, w, who am i
mail
Descripción: envio y lectura de correo electronico.
Ejemplos: mail pepe@ibercom.com < fichero, mail -v pepe@ibercom.com < fichero
sort
Descripción: ordena el contenido de un fichero.
Ejemplos: cat /etc/numeros | sort, ls | sort
ln
Descripción: =link. para crear enlaces, accesos directos.
Ejemplos: ln -s /directorio enlace
tail
Descripción: muestra el final (10 lineas) de un fichero.
Ejemplos:tail -f /var/log/maillog, tail -100 /var/log/maillog | more
head
Descripción: muestra la cabecera (10 lineas) de un fichero.
Ejemplos: head fichero, head -100 /var/log/maillog | more
file
Descripción: nos dice de que tipo es un fichero.
Ejemplos: file fichero, file *

Comandos de administracion

sysctl
Descripción: Configurar los paràmetros del kernel en tiempo de ejuecución.
Ejemplos: sysctl -a
ulimit
Descripción: muestra los limites del sistema (maximo de ficheros abiertos, etc..)
Ejemplos: ulimit
adduser
Descripción: añadir usuario de sistema.
Ejemplos: adduser pepe, adduser -s /bin/false pepe

userdelDescripción: = eliminar usuario de sistema
Ejemplos: userdel pepe
usermodDescripción: = modificar usuario de sistema
Ejemplos: usermod -s /bin/bash pepe
df
Descripción: = disk free. espacio en disco disponible. Muy util.
Ejemplos: df, df -h
uname
Descripción: =unix name. Informacion sobre el tipo de unix en el que estamos, kernel, etc.
Ejemplos: uname, uname -a
netstat
Descripción: la informacion sobre las conexiones de red activas.
Ejemplos: netstat, netstat -ln, netstat -l, netstat -a
ps
Descripción: =proccess toda la informacion sobre procesos en ejecucion.
Ejemplos: ps, ps -axf, ps -A, ps -auxf
free
Descripción: muestra el estado de la memoria RAM y el SWAP.
Ejemplos: free
ping
Descripción: heramienta de red para comprobar entre otras cosas si llegamos a un host remoto.
Ejemplos: ping www.rediris.es
traceroute
Descripción: herramienta de red que nos muestra el camino que se necesita para llegar a otra maquina.
Ejemplos: traceroute www.rediris.es
du
Descripción: =disk use. uso de disco. Muestra el espacio que esta ocupado en disco.
Ejemplos: du *, du -sH /*, du -sH /etc
ifconfig
Descripción: =interface config. configuracion de interfaces de red, modems, etc.
Ejemplos: ifconfig, ifconfig eth0 ip netmask 255.255.255.0
route
Descripción: gestiona las rutas a otras redes.
Ejemplos: route, route -n
iptraf
Descripción: muestra en una aplicacion de consola TODO el trafico de red IP, UDP, ICMP.
Permite utilizar filtros, y es SUMAMENTE UTIL para diagnostico y depuracion de firewalls
Ejemplos: iptraf
tcpdump
Descripción: vuelca el contenido del trafico de red.
Ejemplos: tcpdump, tcpdump -u
lsof
Descripción: muestra los ficheros(librerias, conexiones) que utiliza cada proceso
Ejemplos: lsof, lsof -i, lsof | grep fichero
lsmodDescripción: Muestra los modulos de kernel que estan cargados.
Ejemplos: lsmod
modprobeDescripción: Trata de instalar un modulo, si lo encuentra lo instala pero de forma temporal.
Ejemplos: modprobe ip_tables, modprobe eepro100
rmmodDescripción: Elimina modulos del kernel que estan cargados
Ejemplos: rmmod <nombre de modulo>
sniffit
Descripción: Sniffer o husmeador de todo el trafico de red. No suele venir instalado por defecto.
Ejemplos: sniffit -i

COMBINACIONES UTILES
Los comandos son muy útiles, pero con el conocimiento básico del shell y sus comandos tenemos armas muy poderosas que muestran todo el potencial del interprete de comandos Unix. A continuación se muestran algunos ejemplos avanzados de comandos que se usan con cierta frecuencia.
comando | grep filtro
A la salida de cualquier comando le podemos aplicar grep para que solo nos muestre
la informacion que nos interesa.
mail pepe@ibercom.com < fichero.conf
Con esto nos enviamos rapidamente un fichero de sistema a nuestra cuenta.
mail -v testing@dominio.com
Con el parametro -v, al terminar de escribir (. enter), veremos la traza del correo hasta el servidor,
si es aceptado o no.
find / -name 'filtro' -print
Find es un buscador de ficheros muy potente y con muchos parametros, todos los que nos podamos
imaginar (tamaños, fechas, tipos de archivos, etc..)
Al hacer more:
/cadena : podemos hacer busqueda de cadena
f : adelante
b: volver arriba
v: iniciar vi en la linea que estamos

NOTAS, ACTUALIZACIONES
Este documento se actualiza frecuentemente. Para tener la última versión conviene mirar la versión de la web. En cualquier caso, si lo que se desea es una referencia rápida basta con cualquier versión.
Autor: Pello Xabier Altadill Izura
Email: pello@pello.info
Versiones: http://pello.info

No hay comentarios: