miércoles, 4 de diciembre de 2013

ARCHIVOS SOPORTADOS POR LINUX



TIPOS ARCHIVOS SOPORTADOS POR LINUX

ISO9660: Sistema de archivos para CD-ROM
MINIX: Este sistema de archivos se emplea para disquetes.
FAT: El sistema de archivos originalmente utilizado por DOS. FAT 12, FAT16, FAT32.
VFAT: FAT virtual Soporte para nombres de archivo largos dentro del sistema de archivos FAT.
UFS: Empleado por BSD, SunOS y NeXTstep. Sólo soportado en modo de sólo lectura.
NTFS: Sistema de archivos Microsoft Windows NT, sólo lectura.
Ext2,3: Sistemas de archivos Linux originales. Ext3 incluye soporte de journaling (registro por diario).
XFS: Sistema de archivos de journaling de SGI.
JFS: Sistema de archivos de journaling de IBM.
ReiserFS: Sistema de archivos de journaling de Hans Reiser.
swap : Las particiones swap se usan para soportar memoria virtual

Manejo del Sistema de Archivos,discos y otros dispositivos


Tareas Programadas por Linux



Tareas programadas
Muchas veces uno tiene que hacer backups, mantener sincronizados dos o más directorios (carpetas)
recibir mensajes popup de la propia máquina, etc, y no hace falta decir que si se hace de forma
automática nos ahorramos varios minutos, olvidos, dolores de cabeza, etc, en Linux hay varias
formas de tener tareas programadas/automáticas. El archivo crontab situado dentro de la carpeta /etc controla las tareas automáticas de todo el
sistema, para el resto de los usuarios habrá que buscar en /var/spool/cron/crontabs, donde el
archivo tiene el mismo nombre que el usuario, por ej.: /var/spool/cron/crontabs/abel, pero en
general no está orientado a editarse en forma directa.
El archivo crontab mostrado en la imagen es el mismo que se puede encontrar en casi cualquier
distro (salvo las últimas 3 líneas que le agregué), aunque a simple vista se ve algo intimidante
su edición es más fácil de lo que aparenta, ya que:
* va una tarea por línea
* cada linea tiene campos que se separan con uno o más espacios (excepto el último que es la tarea
a realizar)
los campos son los siguientes:
Campo : Rango/valor permitido
minuto : 0 a 59
hora : 0 a 23
dia del mes : 1 a 31
mes : 1 a 12 (o por nombre en inglés)
dia de la semana : 0 a 7, donde 0 y 7 es domingo (o por nombre en inglés)
tarea : comando o script tal como lo ejecutaría desde la consola
se pueden agregar valores adicionales a cada campo separándolos por comas y sin espacios
por ej si quiero ejecutar un backup a las 3:05 de la mañana y a las 13:05 todos los días
como usuario root:
5 3,13 * * * root backup.sh
Ahora si quiero hacer este backup de lunes a viernes justo al mediodía:
0 12 * * 1-5 root backup.sh
aquí hay algo nuevo: el 1-5, aquí se especificó un rango de valores, ya que es mas corto que
poner 1,2,3,4,5
También puedo querer hacerlo cada 2 horas:
*/2 0 * * * root backup.sh
acá hay otra cosa nueva: */2, significa justamente "a cualquier hora cada dos horas", el
demonio cron tomará como referencia el momento en que se leyó el cambio (el cron lee el archivo
de configuración una vez por minuto en busca de cambios)
TIP: luego de escribir la tarea se debería agregar el parámetro > /dev/null 2>&1 más adelante
explicaré el motivo
Esto fue lo básico para jugar con la programación de tareas, si sos insaciable, en las páginas del
manual (escribiendo man 5 crontab desde la consola) vas a tener bastante

Procesos de Linux



Tipos de procesos
Básicamente hay dos: los procesos de usuario y los demonios:
- Los procesos de usuario son los programas que utiliza el usuario generalmente y se encuentran conectados a una terminal. El programa aparecerá el pantalla y interactuara con el usuario
- Los demonios por contra, no están conectados a una terminal, funcionan solos y no interactúan con el usuario.

Entorno Grafico de Linux



Entorno grafico de Linux
El entorno gráfico mas utilizado en Unix y GNU/Linux: XWindow

XWindow es un sistema estandarizado para manejo de aplicaciones gráficas en Unix y es el utilizado por GNU/Linux.

Posee una arquitectura muy peculiar pensada no sólo para usar aplicaciones gráficas locales, sino que también remotas, además de brindar una gran flexibilidad al entorno y en definitiva al usuario del mismo.

El sistema XWindow se compone de varias partes bien definidas y estandarizadas, pero los conceptos mas notables y útiles de entender son:

    funciona en modalidad cliente-servidor
    posee los denominados manejadores de ventanas
    las aplicaciones utilizan librerías de widgets
    existen entornos integrados de escritorio

Modalidad cliente-servidor

Mediante ésta modalidad, un usuario utilizando el sistema XWindow puede correr no solamente aplicaciones en su computadora, sino que también puede correr aplicaciones en otra computadora y manejarlas de la misma manera a como lo hace con las aplicaciones ejecutándose localmente.

El servidor es el encargado de manejar el hardware (pantalla, teclado, mouse, etc.).

Los clientes son las aplicaciones que el usuario utiliza, éstas se conectan al servidor utilizando los servicios brindados por éste y la conexión puede ser remota o en la misma computadora.

La abstracción del hardware brindada por el servidor permite utilizar aplicaciones ejecutadas en plataformas completamente diferentes, incluso diferentes sistemas operativos, implementaciones de XWindow y hardware.

Nótese el potencial que brinda esto, ya que por ejemplo puede utilizarse para ahorrar dinero ejecutar aplicaciones en un computador de alta performance y tener terminales baratas, sencillas y prácticas para manejar dichas aplicaciones; y ésta solución también brinda mayor facilidad de administración, ya que la misma se puede centralizar en el computador central (el cual desde el punto de vista de XWindow actúa cómo cliente y las terminales serían los servidores).
Los manejadores de ventanas

Éstos se encargan de manejar la posición y tamaño de las ventanas de las aplicaciones, así como también el "foco", el cambio de una ventana a otra, y varias otras cosas mas, relacionadas con las ventanas.

Los manejadores de ventanas son clientes especiales, ya que puede correrse en un momento dado solamente uno por cada servidor.

Por lo general los manejadores de ventanas soportan varias características avanzadas como por ejemplo varios escritorios virtuales, decoraciones muy vistosas y configurables, algunos soportan menús para lanzar aplicaciones e íconos en el escritorio, etc. Los escritorios virtuales dividen la pantalla en partes o escritorios, donde se puede tener por cada escritorio un conjunto de ventanas dado, y se puede cambiar de escritorio a escritorio tan fácilmente como cambiarse de una aplicación a otra.
Las aplicaciones y las librerías de widgets

XWindow provee una librería de programación estándar llamada XLib, la cual es muy básica y no fue pensada para hacer aplicaciones directamente sobre ella (si bien las hay), sino mas bien para ser usada por otras librerías de mas alto nivel de abstracción y proveer de las funciones básicas de comunicación, dibujado, etc. de XWindow.

Por lo tanto las aplicaciones son desarrolladas sobre librerías que proporcionan los denominados "widgets" y otras utilidades.

Los widgets son los controles con los cuales el usuario interactúa con las aplicaciones, es decir, son las cajitas de texto, las etiquetas, los botones, etc., y que juntos forman la interface de las aplicaciones.

Existen muchas librerías de widgets y por lo tanto hay varios estilos de interfaces y muchos programas se ven diferentes a otros debido a que usan una librería de widgets diferente. Sin embargo hay algunas librerías de widgets que son mas comúnmente usadas, pero éstas por lo general permiten una amplia configuración de la visualización y el comportamiento al usuario, y por eso si uno observa el entorno gráfico de dos usuarios, por lo general encontrará diferencias.

Que halla tal variedad y flexibilidad no es algo malo, sino que esto permite al usuario estar a gusto con su entorno gráfico, y hasta identificarse con él.
Los entornos integrados de escritorio

Éstos van mas allá de un manejador de ventanas y una librería para crear aplicaciones sobre ella; proveen un conjunto de aplicaciones, librerías y otros sistemas, para lograr mayor integración entre sus aplicaciones y mayor integración de éstas con el entorno.

Algunos de los aspectos que definen los entornos integrados de escritorio son:

El funcionamiento del drag&drop (ej. cuando se arrastra un archivo de imagen sobre un procesador de texto).
La intercomunicación entre aplicaciones.
Extensiones al manejador de ventanas para que soporte mas cosas y se integre mejor con las aplicaciones.
Arquitectura de aplicaciones formadas por componentes embebidos (ej. embeber una planilla de cálculo en un procesador de texto).
Configuración centralizada y compartida (ej. se cambia un seteo y se refleja en todas las aplicaciones).
Manejo de sesiones (éste punto también puede ser realizado por algunos manejadores de ventanas u otros programas y consiste en apagar el sistema en un estado dado y al reiniciarlo que vuelva al estado en que se encontraba, es decir, con todas las aplicaciones con las cuales el usuario estaba trabajando abiertas y con los documentos o datos que estaban manejando).
otras cosas que redundan en una mayor integración entre las aplicaciones y el entorno (ej. íconos estándar, teclas de acceso rápido estándar, etc.).
Procesos de Linux
Los procesos son programas que se ejecutan en un momento dado. Cuando usamos un sistema operativo de GNU/Linux como Ubuntu por ejemplo (o cualquier otro, también dentro de windows y mac puede aplicarse) existen una serie de procesos que se están ejecutando constantemente y que son los que hacen al sistema operativo utilizable.
Los procesos en GNU/Linux son organizados de forma jerárquica, cada proceso es lanzado por un proceso padre y es denominado proceso hijo. De está forma, todos los procesos en GNU/Linux son hijos de init ya que este es el primer proceso que se ejecuta al iniciar el ordenador y init es padre de todos los procesos. Si se mata al proceso padre, también desaparecerán los procesos hijos.

Configuracion del Entorno de Linux



Configuración del entorno de Linux
Establece un buen entorno de trabajo mediante la creación de dos nuevos ficheros de inicio para el intérprete de comandos bash. Estando en el sistema como usuario lfs, ejecuta los siguientes comandos para crear un .bash_profile nuevo:
cat > ~/.bash_profile << "EOF"
exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
EOF
Cuando entras como usuario lfs el intérprete de comandos inicial es un intérprete de ingreso que lee el /etc/profile de tu anfitrión (que posiblemente contenga algunos ajustes de variables de entorno) y luego lee .bash_profile. El comando exec env -i.../bin/bash del fichero .bash_profile sustituye el intérprete de comandos en ejecución por uno nuevo con un entorno completamente vacío, excepto por las variables HOME, TERM y PS1. Esto asegura que en el entorno de construcción no aparezcan variables de entorno indeseadas o dañinas procedentes del sistema anfitrión. La técnica aquí usada consigue el objetivo de asegurar un entorno limpio.
La nueva instancia del intérprete comandos es un intérprete de no ingreso que no lee los ficheros /etc/profile o .bash_profile, pero en su lugar lee el fichero .bashrc. Crea ahora el fichero .bashrc:
cat > ~/.bashrc << "EOF"
set +h
umask 022
LFS=/mnt/lfs
LC_ALL=POSIX
PATH=/tools/bin:/bin:/usr/bin
export LFS LC_ALL PATH
EOF
El comando set +h desactiva la función de tablas de dispersión (hash) de bash. Normalmente, esta función es muy útil: bash usa una tabla de dispersión para recordar la ruta completa de los ejecutables, evitando búsquedas reiteradas en el PATH para encontrar el mismo binario. Sin embargo, las nuevas herramientas deberían utilizarse a medida que son instaladas. Al desactivar esta característica, el intérprete de comandos siempre buscará en el PATH cuando deba ejecutarse un programa. Por tanto, el intérprete de comandos encontrará las herramientas recién compiladas en $LFS/tools tan pronto como estén disponibles, sin recordar una anterior versión del mismo programa en una ubicación diferente.
Establecer la máscara de creación de ficheros (umask) a 022 asegura que los ficheros y directorios de nueva creación sólo pueden ser escritos por su propietario, pero son legibles y ejecutables por cualquiera (asumiendo que los modos por defecto son usados por la llamada open(2) del sistema, los nuevos ficheros tendrán permisos 644 y los directorios 755).
La variable LFS debe establecerse al punto de montaje elegido.
La variable LC_ALL controla la localización de ciertos programas, haciendo que sus mensajes sigan las convenciones para un determinado país. Si el sistema anfitrión utiliza una versión de Glibc anterior a la 2.2.4, tener LC_ALL establecida a algo diferente a “POSIX” o “C” (durante el siguiente capítulo) puede causar problemas si sales del entorno chroot e intentas regresar más tarde. Establecer LC_ALL a “POSIX” o “C” (ambos son equivalentes) asegura que todo funcionará como se espera dentro del entorno chroot.
Al añadir /tools/bin al principio del PATH, todos los programas instalados en el Capítulo 5 son inmediatamente detectados por el intérprete de comandos tras su instalación. Esto, combinado con la desactivación de las tablas de dispersión, limita el riesgo de utilizar los antiguos programas del anfitrión cuando dichos programas ya están disponibles en el entorno del capítulo 5.
Finalmente, para tener el entorno preparado por completo para construir las herramientas temporales, carga el perfil de usuario recién creado:
source ~/.bash_profile