Archive for 23/02/07
Listado de comandos útiles en Bash
VARIABLES DE ENTORNO
set - export $PATH=/variable/entorno echo $PATH env - Muestra las variables de entornos del usuario
MÓDULOS
lsmod - Muestrar los módulos cargados en el núcleo de Linux modprobe nombre_modulo -> Añade o quita módulos del kernel
PROCESOS
fg - procesos en foreground bg - procesos en background ps -auxw - Ver todos los procesos y que no nos corte la pantalla killall nombre_proceso - Si deseamos matar todos los procesos ejecutados por el comando vim kill -l - Ver todas las señales de los procesosEstados de los procesos
| Id | Estado del proceso |
| D | uninterruptible sleep (usually IO) |
| R | runnable (on run queue)- Proceso ejecutando o en cola |
| S | sleeping - Proceso dormido |
| T | traced or stopped - Proceso detenido |
| W | paging - Proceso paginado |
| X | dead - Proceso muerto |
| Z | zombie Aquellos procesos cuyos procesos padres han muerto dejando el proceso hijo sin finalizar. Cuando esto ocurre no es una buena señal. |
ESTADÍSTICAS
free -m De memoria vmstat -s -S: M Del sistema
GENÉRICAS
watch 'ls -la' Muestra el resultado de un comando cada x segundos which comando - Localiza el comando type comando - Muestra los aliases del comando sudo comando usuario - Ejecuta un comando como si fuera otro usuario
RUNLEVELES
chkconfig --list ejemplo Muestra/Modifica el estado de los servicios del sistema en cada nivel de arranque (runlevel)
DISCOS
cat /dev/cdrom > /usr/imagen.iso - Crea una imagen del cdrom cat /dev/hda > /dev/hdb - Clona el disco duro mount -rt iso9660 /dev/hdc /cdrom - Montar en modo lectura con sitema de fichero iso9660 un cdrom fsck /dev/hda1 - Comprueba el disco fdisk -l - Muestra las particiones del disco
CADENAS Y FICHEROS
tr 'A-Z' 'a-z'
RED
netstat -atun | grep ESTAB - Muestra las conexiones establecidas con nuestra máquina netstat -a - Muestras los puertos abiertos ifdown eth0 - Desactiva el servicio de red para la tarjeta eth0 ifup eth0 - Activa el servicio de red para la tarjeta eth0 iptraf - Herramienta gráfica de gestión de tráfico de red /usr/sbin/iftop - Otra herramienta de análisis de tráfico
TAR
tar -tzvf fichero.tar Muestra el contenido del fichero
COMPILACIÓN
gcc -o prueba prueba.c
FIND
find / -name mysql* -exec rm {} - Busca todos los ficheros que comiencen por mysql y los elimina
find . -name "*mysql*" -print - Busca todos los ficheros que contengan la palabra mysql
HORAS
date --set=15:30 - Cambiar la hora
APT
apt-cache search datoabuscar - Busca una aplicación en la lista de aplicaciones a instalar (sólo distribuciones Debian) apt-get install nombreaplicacion - Instala la aplicación especificada (si se tiene conexión a Internet), sólo disponible en distribuciones Debian apt-get install -f - Comprueba la correcta instalación de los paquetes descargados en '/var/cache/apt/archives/', repitiendo la instalación si fuese necesario o bajando algún paquete dependiente que no se haya descargado apt-get update - Actualiza la base de datos de paquetes a actualizar o instalar a partir del fichero '/etc/apt/sources.list'. La base de datos la constituyen un conjunto de ficheros ubicados en '/var/lib/apt/lists/' apt-get upgrade - Actualiza todos los paquetes instalados en el sistema a la última versión disponible apt-get clean - Elimina todos los paquetes (.deb) descargados (almacenados automáticamente en '/var/cache/apt/archives/') apt-get update && apt-get -f dist-upgrade && apt-get clean . Actualizar completamente el listado de paquetes disponibles Si estás detrás de un proxy no transparente apt-get necesita IP y puerto del proxy obtenido de unas variable de entorno que vamos a menter automáticamente en .bashrc y .bash_profile: export http_proxy=http://128.19.54.25:8080/ export ftp_proxy=http://128.19.54.25:8021/
YUM
Por defecto YUM lee el fichero de configuración /etc/yum.conf Importar las claves GPG rpm --import /usr/share/rhn/RPM-GPG-KEY rpm --import /usr/share/rhn/BETA-RPM-GPG-KEYyum info festival yum install festival yum list festival* yum update RedHat sólo ofrece soporte para up2date up2date
Add comment Febrero 23, 2007
10 Buenos hábitos a la hora de programar en shell scripting
Traducción propia del artículo de IBM http://www-128.ibm.com/developerworks/aix/library/au-badunixhabits.html
1 – Definir una estructura de árbol de una sóla vez
mkdir -p tmp/a/b/c
en vez de
~ $ mkdir tmp
~ $ cd tmp
~/tmp $ mkdir a
~/tmp $ cd a
~/tmp/a $ mkdir b
~/tmp/a $ cd b
~/tmp/a/b/ $ mkdir c
~/tmp/a/b/ $ cd c
~/tmp/a/b/c $
Y mejor todavía, pues crea el directorio project y dentro los distintos directorios
mkdir -p project/{lib/ext,bin,src,doc/{html,info,pdf},demo/stat/a}
2 – Cambiar el path, no mover el fichero. Por ejemplo, no desempaquetar ficheros directamente en el directorio que deseemos. Para ello podemo usar la opción -C
tar xvf -C tmp/a/b/c newarc.tar.gz
3 – Combinar comandos con operadores de control
Por ejemplo: Ejecutar un comando sólo si otro comando ha devuelto 0 exit status. cd tmp/a/b/c && tar xvf ~/archive.tar Otro ejemplo: Ejecutar un comando sólo si otro comando no ha devuelto un 0 exit status. cd tmp/a/b/c || tar xvf ~/archive.tar
4 – Entrecomillar variables con cuidado
Ejemplos:
ls tmp/
a b
~ $ VAR="tmp/*"
~ $ echo $VAR
tmp/a tmp/b
~ $ echo "$VAR"
tmp/*
~ $ echo $VARa
~ $ echo "$VARa"
~ $ echo "${VAR}a"
tmp/*a
~ $ echo ${VAR}a
tmp/a
5 – Usar secuencias de escape para controlar la entrada en el log
cd tmp/a/b/c || > mkdir -p tmp/a/b/c && > tar xvf -C tmp/a/b/c ~/archive.tar cd tmp/a/b/c > || > mkdir -p tmp/a/b/c > && > tar xvf -C tmp/a/b/c ~/archive.tar
6 – Agrupar los comandos en una lista para poder ir redirigiendo los resultados
Ej. Ejecutar una lista de comandos en un subshell
~( cd tmp/a/b/c/ || mkdir -p tmp/a/b/c &&
> VAR=$PWD; cd ~; tar xvf -C $VAR archive.tar )
> | mailx admin -S "Archive contents"
Ej. Ejecutar una lista de comandos en el propio shell
~ $ { cp ${VAR}a . && chown -R guest.guest a &&
> tar cvf newarchive.tar a; } | mailx admin -S "New archive"
7 – Usar xargs fuera de find. Usar con -e. Por defecto se considera el símbolo _ como fin de línea. Si por alguna razón aparece ese símbolo en una línea como único carácter con xargs, todo lo que venga detrás no será filtrado.
~ $ find some-file-criteria some-file-path | > xargs some-great-command-that-needs-filename-arguments Otros ejemplos de xargs $ xargs a b c Control-D a b c ~ $ Otros ejemplos: ~/tmp $ ls -1 | xargs December_Report.pdf README a archive.tar mkdirhier.sh ~/tmp $ ls -1 | xargs file December_Report.pdf: PDF document, version 1.3 README: ASCII text a: directory archive.tar: POSIX tar archive mkdirhier.sh: Bourne shell script text executable ~/tmp $
8 – Evitar usar grep y wc -l. Usar mejor -c que cuenta las líneas y es más rápido
time grep -c and tmp/a/longfile.txt
9 – Es preferible usar awk en vez de grep
Usar ls -l | awk '$6 == "Dec"' en vez de ls -l /tmp/a/b/c | grep Dec
10 – No usar tuberías con grep y cat puesto que grep toma el nombre del fichero como argumento
BIEN time grep and tmp/a/longfile.txt MAL time cat tmp/a/longfile.txt | grep and
4 comments Febrero 23, 2007