Mostrando entradas con la etiqueta Archivos. Mostrar todas las entradas
Mostrando entradas con la etiqueta Archivos. Mostrar todas las entradas

miércoles, 10 de junio de 2009

find y locate

Estas son herramientas reales, usadas cuando buscamos en otros PATH. El comando find, conosido de UNIX, es muy util aunque pude causar algunos problemas por la dificultad de la sintaxis. Este comando no solo permite buscar un archivo por el nombre, sino tambien por tamaño, fecha de ultimos cambios y otras propiedades del archivo. La Forma mas comun es:

find path -name cadena

Que puede ser interpretado como "busca en todos los directorios y subdirectorioscontenidos en path, y muestra aquellos que contengan cadena en su nombre".


Otra aplicacion de find es buscar archivos de un tamaño determinado.
En el ejemplo debajo, peter quiere buscar archivos contenidos en el directorio
actual (y subdirectorios) que superen los 5 mb:

peter:~> find . -size +5000k
psychotic_chaos.mp3


Si buscan en las paginas de manual, encontrarán que find puede ejecutar
operaciones sobre los archivos encontrados. Por ejemplo, borrarlas. Lo primero sera
testear, sin la opcion -exec, que los archivos son los correctos.


peter:~> find . -name "*.tmp" -exec rm {} \;
peter:~>

Años mas tarde fue desarrollado locate. Este comando es mas facil de usar, pero tiene menos funcionalidades que find ya que su salida esta basada en una base de datos de archivos que es actualizada una vez al dia. Por el otro lado, locateutiliza menos recursos que find y muestra los resultados casi instantaneamente.


La mayoria de las distribuciones Linux usan slocate en estos dias, que es la version moderna de locate y no permite que los usuarios lean ciertos directorios a los que no tengan accesso (a menos que sean root). En la mayoria de los sistemas, locate es un enlace al programe slocate:


billy:~> ls -l /usr/bin/locate
lrwxrwxrwx 1 root slocate 7 Oct 28 14:18 /usr/bin/locate -> slocate*

miércoles, 3 de junio de 2009

Buscar Archivos (1)

Utilizando algunas caracteristicas del shell

Primero veremos como podemos manipular varios archivos de una sola vez, de modo que la consola interprete los requerimientos entre corchetes "[ ]" y substitya la expresión contenida por los archivos correspondientes. Por ejemplo, al indicar un rango de numeros, o al sustituir los caracteres por un asterisco.


Todas las sustituciónes pueden realizarse simultaneamente; la consola Bash, por ejemplo, no tiene problemas con expresiones como ls dirname/*/*/*[2-3].

El asterisco es usado comunmente para minimizar el esfuerzo de tipeo: por ejemplo, se puedeutilizar $ cd dir* en lugar de $ cd directory. En bash, no es necesario porque las consolas GNU tienen una caracteristica llamada completar nombre de archivo. Esto quiere decir, que uno puede tipear los primeros caracteres de un comando o un archivo y el shell encontrara y sugerira que significa. Por ejemplo, en un directorio conteniendo varios archivos, uno puede tipear $ ls A y presionando la tecla [TAB] dos veces en lugar de [ENTER]. Si solo hay un archivo que comience con la letra "A", este sera mostrado como argumento del comando lsinmediatamente.


El comando Which

Una manera simple de buscar archivos es utilizar el comando which para buscar en los directorios listados en el PATH del usuario. Se recuerda que el PATH contiene
los directorios de busqueda que contienen programas ejecutables, por lo que which no funcionara con archivos ordinarios. El comando which es util a la hora de solucional problemas del tipo "command not found". En el ejemplo debajo, el usuario tina no puede usar el programa acroread, mientras que su colega si puede. El colega de tina le dice que puede ver el programa en el directorio /opt/acroread/bin, pero este no esta en su PATH.

tina:~> which acroread
/usr/bin/which: no acroread in (/bin:/usr/bin:/usr/bin/X11)

El problema puede ser resuelto dandole el path completo al ejecutar el programa o agregar el directorio al PATH de tina exportandoesta variable:

tina:~> export PATH=$PATH:/opt/acroread/bin
tina:~> echo $PATH
/bin:/usr/bin:/usr/bin/X11:/opt/acroread/bin

Usando el comando which podemos comprobar si un comando es un alias de otro comando:



gerrit:~> which -a ls
ls is aliased to `ls -F --color=auto'
ls is /bin/ls

martes, 2 de junio de 2009

Archivos de configuración

La mayoría de los archivos de configuración estan almacenados en eldirectorio /etc. El contenido de cada archivo puede ser visto con el comando$ cat, que enviará el contenido del archivo al dispositivoestandar de saluda (el monitor).

Haremos un repaso de los archivos de configuracion mas comunes, aunque esta no es una lista esahustiva, los archivos de configuracion suelen estan bien comentados, por lo que la lectura de los mismos bastará. Algunos archivos tienen paginas de manual con información extra, como $ man group.










ArchivoInformación / Servicio
apacheArchivo de configuración del servidor de web Apache
bashrcArchivo de Configuracion para el Bourne Again SHell. Define funciones y alias para todos los usuarios. Otras Shells pueden tener sus propios archivos de configuración, como cshrc.
crontab y los directorios cron.*Configuración de tareas que necesitan ser ejecutadas periodicamente (como Backups, actualizaciones del sistema, limpieza, logs, etc.).
defaultOpciones por deault de algunos comandos especificos, como useradd
filesystemsSistemas de archivos
fstabLista particiones y sus puntos de montaje
ftp*Configuracion del servidor ftp: quien puede conectarse, a que partes del sistemase puede acceder, etc.
groupArchivo de configuracion de grupos de usuario. Usar las utilidades shadowgroupadd,groupmod y groupdel para editar este archivo. La edición manual solo debe realizarse solo si se sabe lo que se hace.
hostsContiene una lista de maquinas que pueden conectar usando la red, pero sin la necesidad de especificar un nombre de servicio de dominio. No tiene nada que ver con la configuración de red del sistema, la cual se encuentra en /etc/sysconfig.
inittabInformación de booteo: modo, cantidad de consolas, etc.
issueInformación sobre la distribución (version y kernel).
ld.so.confUbicación de librerias
lilo.conf silo.conf aboot.conf etc.Información de booteo del LInux LOader, el sistema de booteo fue cambiando gradualmente hasta ser reemplazado por el GRUB.
logrotate.*Rotación de Logs, es un sistema que previene la acumulación de grandes cantidades de archivos de log.
mailDirectorio que contiene instrucciones sobre el comportamiento del servidor de mail.
modules.confConfiguración de modulos que activan dispositivos especiales (drivers).
motdMensaje del dia: muestra un mensaje a quien se conecte al sistema (en modo texto), puede ser usado por el administrador del sistema para anunciar mantenimientos del sistema, cortes, etc.
mtab Sistemas de archivos montados. Es recomendable NO editar este archivo
nsswitch.confOrdena con que solucionador de nombres contactar, cuando un proceso necesita resolver un nombre de host.
pam.dConfiguración de modulos de utenticación
passwdLista de usuarios locales. Usar las utilidades shadow groupadd,groupmod y groupdel para editar este archivo. La edición manual solo debe realizarse solo si se sabe lo que se hace.
printcapDesactualizado pero frecuentemente utilizado archivo de configuración de impresión.No editar manualmente
profileConfiguración del entorno: varialbes, propiedades por defecto de archivos nuevos, limitación de recursos, etc.
rc*Directorios definiendo los servicios activos según el run level
resolv.confOrden de conexión a los DNS.
sendmail.cfArchivo de configuración principal del servidor de mail I>Sendmail.
servicesPuertos Abiertos
sndconfigoSoundConfiguración de la tarjeta de sonido y sonidos del sistema
sshDirectorio que contiene los archivos de configuración de SSH (Secure SHell).
sysconfigDirectorio que contiene los archivos de configuración del sistema: Mouse, teclado, red, escritorio, reloj, energia, etc.
X11Configuracion del servidor de ventanas X. RedHat usa XFree (que utiliza el archivo Xfree86Config).
xinetd.* or inetd.confArchivos de configuración de servicios de internet que corren desde demonios del sistema (no corren demonios independientes)

viernes, 29 de mayo de 2009

La realidad del sistema de archivos

Para la mayoría de las tareas realizadas por usuarios y administradores de sistemas, es suficiente con aceptar que los archivos y directorios estan estructurados en forma de arbol. Sin embargo, la computadora no entiende que es un arbol.

Cada particion tiene su propio sistema de archivos. Imaginando todos esos sistemas de archivos juntos, podemos formarnos una idea de estructura ramificada del sistema entero, pero no es tan simple como eso. En un sistema de archivos, un archivo esta representado por un inodo, una especie de numero de serie conteniendo información acerca de los datos reales que forman un archivo: a quien pertenece y donde esta localizado fisicamente en el disco duro.

Cada particion tiene su propio set de inodos; a traves de un sistema de multiples particiones, pueden existir archivos con el mismo número de inodo.

Cada inodo describe una estructura de datos en el disco duro, almacenando las propiedades de un archivo, incluyendo la ubicación fisica de los datos. Cuando un disco rigido es formateado, un número fijo de inodos por partición es creado. Este número es el máximo de archivos, no importa el tipo (incluyendo directorios, archivos especiales, enlaces, etc.) que pueden existir en la misma partición al mismo tiempo. Tipicamente se utiliza 1 inodo cada 2 a 8 kilobytes.

Cuando un archivo es creado, este toma un inodo libre. Ese inodo contiene la siguiente información:


  • Usuario y Grupo a quien pertenece el archivo.

  • Tipo de archivo (regular, directorio, etc.)

  • Permisos del archivo.

  • Fecha y hora de creación, última lectura y último cambio.

  • Cantidad de enlaces apuntando al archivo.

  • Tamaño del archivo.

  • Ubicación fisica del archivo.

La única información que no es ncluida en un inodo, es el nombre del archivo y del directorio. Este, es almacenado en el archivo especial de directorio. Comnparando nombres de archivo y números de inodos, el sistema puede crear una estructura ramificada (o tipo arbol) que el usuario pueda entender. los usuarios pueden visualizar el número de inodo usando

$ ls -i

El inodo tiene su propio espacio separado en el disco.

jueves, 28 de mayo de 2009

Puntos de Montaje

Todas las particiones estan "enganchadas" al sistema por medio de un punto de montaje.
Los puntos de montaje definen el lugar que ocupa un set de datos en particular dentro del sistema de archivos. Usualmente, todas las particiones estan conectadas a travez del la particion raiz (o root en ingles). Sobre esta partición, la cual es indicada por una barra "/", los directorios son creados. Durante el inicio del sistema, todas las particiones descritas en /etc/fstab son montadas automaticamente.
La infomacion acerca de las particiones del sistema pueden ser visualizadas usando:

$ df

(por "disk full" o "disk free"). Para que la formacion sea mas "legible" se utiliza la opcion:

$ df -h

(h por "human readable") El comando, solo muestra información acerca de particiones no SWAP activas. Lo cual incluye particiones de otros sistemas de la red, como por ejemplo los directorios "home" que son montados de un servidor. La salida del comando sera algo similar a:


Filesystem Size Used Avail Use% Mounted on
/dev/hda8 496M 183M 288M 39% /
/dev/hda1 124M 8.4M 109M 8% /boot
/dev/hda5 19G 15G 2.7G 85% /opt
/dev/hda6 7.0G 5.4G 1.2G 81% /usr
/dev/hda7 3.7G 2.7G 867M 77% /var
fs1:/home 8.9G 3.7G 4.7G 44% /.automount/fs1/root/home


Que muestra el dispositivo, tamaño, utilizado, disponible, porcentaje usado y punto de montaje respectivamente.

viernes, 22 de mayo de 2009

Sistema de Archivos

"en sistemas UNIX todo es un archivo; si algo no es un archivo, entonces es un proceso"

En lo sistemas tipo UNIX (como linux) no existe diferencia entre un archivo y un directorio, ya que un directorio es un archivo que contiene una lista de los archivos que contiene. Tanto programas, servicios, texto, imagenes, etc. son todos archivos.
Los dispositivos de entrada y salida, y en general, cualquier dispositivo, es considerado como un archivo dentro del sistema.

Tipos de archivos

La mayoria de los archivos son solo archivos (llamados "archivos regulares") que contienen datos normales: como texto o programas ejectutables. entre los demas archivos podemos encontrar:

  • Directorios: Archivos que listan otros archivos.
  • Archivos especiales: La mayoria los encontramos en el irectorio /dev (por "device" en inglés)
  • Enlaces (links): es el mecanizmo que permite visualizar el mismo archivo en diferentes lugares del sistema.
  • Sockets (dominios): Provee a los procesos interactivos de red cierta proteccion soportado por el control de acceso del sistema de archivos.
  • Named Pipes: similar a Sockets, pero para procesos interactivos dentro del sistema.

Cuando utilizamos el comando $ ls -l , el primer caracter de la lista nos muestra el tipo de archivo:

(-) Archivo regular
(d) Directorio
(l) Enlace
(c) Archivo especial
(s) Socket
(p) Named Pipe
(b) Dispositivo