Download Capítulo 1
Document related concepts
Transcript
Linux El Sistema Operativo
1
Capítulo 1
LINUX
EL SISTEMA OPERATIVO
A mediados de los años 70, durante la guerra
fría, el gobierno norteamericano escogió un sistema
operativo muy popular entre las universidades llamado
Unix para crear un sistema de comunicación remota que
fuera inmune a ataques y usara la línea telefónica como
vía. Esto hizo que se implementara diversos protocolos
de conexión a red, haciendo de Unix el sistema operativo
sobre el cual se creó Internet. Con el tiempo han surgido
varios sistemas operativos tipo Unix creados por diversas
empresas: AIX (IBM), Solares (Sun), IRIX (Silicon
Graphics), HP-UX (HP), Tru64 (Compaq), MacOSX
(Apple), entre otros.
Pontificia Universidad Católica de Valparaíso
Facultad de Ciencias Básicas y Matemáticas
Instituto de Química
Carrera de Bioquímica
Dentro de los sistemas operativos Unix para
computadores personales destacan Linux y BSD
(OpenBSD, FreeBSD, NetBSD) los cuales son de código
fuente abierto (open source), gratuitos y de gran
potencia no sólo para trabajo en red, sino que para uso
general del computador y hoy por hoy está sumando
gran cantidad de adeptos, disminuyendo con esto el
monopolio que ejerce Microsoft Co. con sus mediocres
productos (líneas Windows, Office, IE entre otros).
Introducción a la Bioinformática
BQA 449
Linux El Sistema Operativo
Arranque
Al encender el equipo (estación de trabajo), el
hardware lee el mbr del disco duro maestro o primario
donde se encuentra el gestor de arranque. Este es un
pequeño programa que contiene información sobre
particiones existentes, a que corresponden (a que
sistemas operativos) y la ubicación de su kernel. Luego
de la carga del kernel se monta el sistema de archivos y
comienza el proceso init el cual es un conjunto de
instrucciones, que es propia de cada sistema operativo, y
que regula la conexión a red, los software a utilizar, la
activación del modo multiusuario, la ejecución del modo
X-Window, el comportamiento frente al usuario, etc.
En el caso de Linux, una vez que se ha finalizado
el proceso de arranque, se pide la identificación del
usuario. A pesar de que es posible dejar el computador
sin un usuario determinado (en algunas distribuciones) lo
más recomendado es que sea obligatorio el uso de un
usuario con su correspondiente contraseña.
Entonces escribimos el login
usuario) y el password (contraseña).
(nombre
Hardware
Son las partes físicas del
computador, incluye todas las
piezas y accesorios.
Software
Datos y programas que se
encuentran almacenados en la
memoria del computador y que
existen
en
y
gracias
al
hardware.
mbr
Viene del inglés “master boot
record” y es un pequeño sector
de memoria al principio del
disco
duro
que
contiene
información sobre la tabla de
particiones.
Partición
Es una división lógica del disco
duro que le permite a un
software
acceder
a
su
información.
Sistema Operativo
Conjunto de softwares que
básicamente
permiten
la
vinculación del usuario con el
hardware, proporcionando una
interfaz de comunicación que
permita gestionar los recursos
de manera eficiente.
Kernel
Es el núcleo del sistema
operativo. Es el nexo directo
con el hardware, gestiona
todos sus recursos. Es quien
decide que software utilizará
que hardware y por cuanto
tiempo.
Shell
Es el llamado intérprete de
comandos. Es el encargado de
“entender”
y
ejecutar
las
órdenes básicas de manejo del
sistema. La shell típica de Linux
es bash.
X Window
Es el encargado de dar una
interfaz gráfica. Funciona como
servidor máquina-usuario ya
que contiene todo un conjunto
de softwares que permiten el
manejo de accesorios (monitor,
teclado, mouse, etc). El más
usado actualmente es el XorgX11
del
login: username
password: ********
Luego hay dos posibilidades, que se obtenga un símbolo
del sistema ($) y el sistema operativo queda funcionando
solo con la shell (para la interacción con el usuario) o que
parta el X Window y luego un entorno de escritorio o
gestor de ventanas como Gnome, KDE, XFCE u otro.
Distribuciones Linux
Existen distintas versiones de Linux, que tienen en
común el modo de arrancar, el sistema de archivos, el
sistema de permisos, el kernel, la shell, entre otros. Sus
diferencias son básicamente el modo de configuración, la
forma de descargar e instalar programas externos y el
entorno de escritorio que utiliza (aunque se puede
cambiar). Existen muchas distribuciones, pero las más
grandes (y de las que derivas la mayoría) son Debian,
SuSe, Slackware, Gentoo y RedHat.
2
Entorno de escritorio Es el conjunto de software que
funciona sobre el X Window y
da una interfaz amigable entre
el software y el usuario.
Pontificia Universidad Católica de Valparaíso
Facultad de Ciencias Básicas y Matemáticas
Instituto de Química
Carrera de Bioquímica
Introducción a la Bioinformática
BQA 449
Linux El Sistema Operativo
3
Sistema de Archivos
Línea de Comando
Es sistema de archivos de Linux y la forma de
trabajar con las particiones funciona de un modo muy
distinto al de MS Windows, al que la mayoría está
acostumbrado. Por está razón se hará una analogía entre
ambos sistemas operativos.
En el caso de que se entre a un entorno de
escritorio (Gnome, KDE), para poder acceder a la línea
de comando es necesario ejecutar un programa llamado
terminal que abre una ventana con la línea de comando
dentro del gestor de ventanas. En el caso que no se
entre a un entorno de escritorio directamente, la shell
está lista para “escuchar” los comandos que el usuario
digite.
En MS Windows cuando se tiene una partición, ésta se
nombra C: y si se tienen más particiones, unidades de
CD o DVD, pendrives, etc. se nombran D: E: etc.
En
Linux
los
dispositivos
de
memoria
(particiones, unidades de CD o DVD, pendrives) no
tienen una ubicación fija, ya que uno los define (o se
definen automáticamente por el software). En Linux el
sistema de archivos se monta en “/” que vendría a ser
como “Mi PC” de MS Windows. Luego se pueden crear
directorios (carpetas) o almacenar archivos allí. Si se
crea una carpeta “boot” esta se identifica por su
ubicación: /boot. A su vez si creamos otra carpeta en
boot o guardamos un archivo este se nombra:
/boot/carpeta o /boot/grub.conf
En Linux existen varios directorios típicos como
boot (se almacenan archivos del arranque), root, bin
(archivos
ejecutables),
usr
(programas),
dev
(dispositivos), home (archivos de usuarios), proc
(mensajes del kernel), mnt (montajes temporales), etc
(archivos de configuración), tmp (archivos temporales),
var, lib (librerías), entre otras.
Una partición puede estar en cualquier directorio,
así como los dispositivos de memoria también pueden
ser
“montados”
en
un
directorio
a
elección.
Generalmente los dispositivos de memoria se montan en
la carpeta /mnt como /mnt/cdrom, /mnt/floppy,
/mnt/usbmem, etc.
El formato GNU de línea de comandos consiste en
el comando en sí (o sea el programa a usar), argumentos
opcionales o parámetros y el operando sobre el cual se
trabaja el comando (como un archivo). Por ejemplo
$ comando -opciones -parámetros operando
(cuando aparezca el signo peso $, quiere decir que lo que
aparece a continuación es un comando y al escribirlo en
el computador, no es necesario agregar el signo $,
porque ya está)
Los sistemas operativos basados en Unix (como Linux)
funcionan con un sistema llamado input/output (I/O).
Este sistema consiste simplemente en que todo
programa o comando requiere un parámetro de entrada
(input) con el que trabajará el programa, algo así como
la materia prima y un parámetro de salida, que es donde
se entregarán los resultados del programa (output) en el
caso que los haya. A veces si no se da un parámetro de
salida (como un nombre de archivo) donde “poner” los
resultados, estos solo se muestran en pantalla, lo que se
conoce como stadard out o stdout. Muchos programas
de Linux usan el stdout como salida por defecto.
Los archivos propios de cada usuario se guardan
en /home/usuario, y aquí se encuentran los archivos de
configuración propios para cada usuario así como su
escritorio y su papelera.
Pontificia Universidad Católica de Valparaíso
Facultad de Ciencias Básicas y Matemáticas
Instituto de Química
Carrera de Bioquímica
Introducción a la Bioinformática
BQA 449
Linux El Sistema Operativo
1
Comandos: Archivos y directorios
pwd - “print working directory”
Este comando sirve para imprimir en pantalla el pathname completo del directorio de trabajo actual. Solo se
escribe el comando, no tiene opciones ni parámetros.
cd – cambiar directorio de trabajo
Cambia el directorio de trabajo. El único argumento que necesita es el pathname de l directorio al que se desea
trabajar.
$ cd /home/bioinfo
mkdir – crear directorios
Crea subdirectorios en el directorio de trabajo actual
$ mkdir bqa449
ls – saber que archivos tengo
Entrega en pantalla una lista de los subdirectorios y archivos que existen en el directorio de trabajo, a no ser que
se especifique otro. Se puede utilizar el comodín * que vale por un número indeterminado de caracteres. El modificados -l
entrega un informe detallado.
$ ls *.txt
$ ls -l /usr
Entregará los archivos terminados en “.txt” del directorio de trabajo.
Entregará todos los archivos del directorio /usr con información más detallada de cada uno de ellos
rm – eliminar archivos
Elimina los archivos o directorios. La opción -f evita confirmar la eliminación de cada archivo, el modificador -R
elimina todos los archivos y subdirectorios en forma recursiva.
rmdir – elimina directorios vacíos
cp – copiar
Copiar archivos y directorios desde una ubicación especificada hacia un destino especificado.
$ cp original destino
mv – mover o cambiar nombre
Funciona igual que copiar, solo que mv es como cortar de MS Window. Si se da el mismo directorio de origen y
destino, pero otro nombre solo cambia el nombre del archivo.
Pontificia Universidad Católica de Valparaíso
Facultad de Ciencias Básicas y Matemáticas
Instituto de Química
Carrera de Bioquímica
Introducción a la Bioinformática
BQA 449
Linux El Sistema Operativo
5
Ambiente de Trabajo Multiusuario
Para tener acceso a un sistema Unix, se requiere
estar registrado como usuario. Esto genera una
identificación como usuario, verificado mediante un
nombre de usuario y una contraseña, otorgándonos
dominio sobre una parte del sistema (directorio
/home/usuario) y acceso a pertenecer a grupos. El
acceso a los recursos es controlado a partir de permisos
que poseen los archivos y directorios asociándolos a
distintos usuarios y grupos definidos. Estos permisos
generan el modo de acceso sobre los archivos y
directorios, pudiendo ser representados de forma
simbólica. Existe un usuario en todo sistema Unix
llamado el superusuario, quien tiene acceso a todos los
archivos y directorios, así como es capaz de modificar los
permisos de estos. Este superusuario se llama root y
para acceder como él, desde la línea de comando se
digita el comando su, que pide la contraseña
correspondiente.
puede
r (4)
w (2)
x (1)
Existen tres tipos de permisos que un usuario
tener para un archivo (o directorio):
– permiso de lectura
- permiso de escritura
- permiso de ejecución
El primer bloque se caracteres se indican los permisos
correspondientes a cada nivel de uso, luego aparece el
dueño y el grupo y finalmente la fecha de creación del
archivo y su nombre.
Los permisos están agrupados en un primer
caracter que define si es un archivo (-), directorio(d) o
enlace (l),. El segundo grupo de tres caracteres se
aplican al usuario dueño del archivo (en este caso felipe),
los siguientes tres caracteres se aplican al grupo (o sea
todos los usuarios que pertenezcan al grupo users) y los
últimos tres caracteres se aplican a los usuarios que no
pertenezcan a este grupo.
Los permisos se ajustan con el comando chmod y el
dueño y grupo con el comando chown.
Para conocer los permisos de un archivo se utiliza
normalmente: ls -l
Comandos - Avanzados
man – manuales de programas
Este sencillo programa permite ver el manual de cualquier programa de Unix
$ man grep
Muestra el manual del programa grep.
tar – empaquetado de archivos y directorios
Es un programa que permite agrupar archivos y directorios en un solo paquete, así como comprimirlos utilizando
otros programas. Los modificadores más usuales son:
-f
-c
-x
-v
-z
-j
Especifica los archivos a utilizar
Crea un paquete de archivos
Desempaqueta
Muestra en pantalla los archivos que se están procesando
Comprime o descomprime utilizando gzip.
Comprime o descomprime utilizando bzip2.
zip – Herramienta de empaquetado y compresión de archivos, similar a tar, pero que genera archivos .zip compatibles con
MS Windows.
Pontificia Universidad Católica de Valparaíso
Facultad de Ciencias Básicas y Matemáticas
Instituto de Química
Carrera de Bioquímica
Introducción a la Bioinformática
BQA 449
Linux El Sistema Operativo
6
head – encabezado de archivos
Permite ver las primeras líneas de un archivo, por defecto entrega 10 líneas, pero se puede ajustar para ver más.
tail – final de un archivo
Muestra las últimas 10 líneas de un archivo. Funciona igual que head.
more – paginador de archivos
Imprime en pantalla el contenido de un archivo. Si este es muy grande y no alcanza a salir en la pantalla, more, lo
va mostrando de página en página
grep – búsqueda de secuencias de caracteres en archivos
Busca expresiones regulares en uno o varios archivos, permitiendo encontrar archivos por algún contenido
conocido.
$ grep ATOM 3nos.pdb
Este comando busca y muestra todas las líneas que contengan la palabra ATOM dentro del archivo 3nos.pdb
awk -
extracción de columnas
Este programa extrae los valores de una columna en particular desde un set de varias columnas.
$ awk datos.txt ‘{print$0}’
Con este comando se extrae la primera columna del archivo datos.txt. Se comienza a contar desde 0.
Redirección de comandos
En Unix, muchos comandos leen desde una entrada estándar y derivan el resultado a una salida estándar. En las shells de
Unix es posible manejar estos flujos en forma previa, proporcionando una manera uniforme de realizar estas tareas. Entre
los mecanismos de redirección de entrada y salida estándar de comandos Unix están:
>
Redirecciona la salida de un comando hacia un archivo
$ ls -l /home/felipe
Este comando muestra todos los archivos de la carpeta /home/felipe. Pero:
$ ls -l /home/felipe > /home/felipe/lista.txt
Con este comando lo mismo que antes iba a la salida estándar (lo muestra en pantalla) ahora se
almacena como texto en el archivo lista.txt que se ubica en /home/felipe.
>>
Anexa a un archivo existente
Hace lo mismo que el anterior, pero en este caso agrega al final de archivo que ya existía.
|
(pipe) Envía la salida de un comando como entrada de otro
Ejemplos:
$ dmesg
Este comando muestra todos los mensajes del kernel (es muy grande y no alcanza salir completo
en la pantalla)
$ dmesg | grep usb
Ahora en este reporte se busca la palabra “usb” y se muestran las líneas donde aparecen.
Pontificia Universidad Católica de Valparaíso
Facultad de Ciencias Básicas y Matemáticas
Instituto de Química
Carrera de Bioquímica
Introducción a la Bioinformática
BQA 449
Linux El Sistema Operativo
7
Editores de texto
Linux como Sistema Operativo de Red
La edición de textos permite la modificación de
los contenidos de un archivo en sus caracteres, sin
asignarlo a un programa específico, lo que se conoce
como “texto plano”. Esta independencia respecto a un
programa lo hace diferente a los procesadores de texto
como MS-Word, OpenOffice, los cuales agregan
encabezados de reconocimiento a los archivos. En
bioinformática a menudo es necesario crear o modificar
archivos de este tipo, así como archivos de configuración
en Linux. Para esto son útiles los editores de texto, los
cuales vienen incluidos en los distintos sistemas Unix y
entre los más frecuentes de encuentran:
Entendemos por trabajo en red (o remoto), todo
lo que implique la conexión de dos o más máquinas
separadas físicamente para transferir información de
cualquier tipo. Dentro de esta definición podemos
considerar el mismo Internet, así como todos los
protocolos que se explicarán a continuación.
vi y vim
pico
joe
emacs
nano
El más recomendable es nano pues entrega los
comandos de manejo directamente en pantalla y es muy
sencillo de usar, aunque emacs está dentro de los
preferidos de los usuarios Linux, por su flexibilidad y
capacidad de extensión.
En el ámbito del Internet o trabajo remoto,
siempre debe haber por lo menos un computador que
sirva como cliente y otro de servidor. El cliente es la
máquina que solicita el servicio, es normalmente el
computador que uno como usuario está utilizando, por
ejemplo al conectarse al Internet. El servidor el la
máquina que recibe la solicitud y entrega lo solicitado,
como un servicio interactivo (Internet y HTTP), archivos
(FTP y PPP), o una shell (Telnet y SSH).
Existen muchos protocolos que nos permiten
conectarnos a máquinas remotas, entre las cuales están:
TCP/IP (Transmission Control Protocol / Internet
Protocol), http (Hypertext Transfer Protocol), FTP (File
Transfer Protocol), PPP (Point-to-Point Protocol), Telnet,
DHCP, SLIP, entre otros.
Dirección IP y Hostname
Para poder usar la red en cualquier sistema,
debemos identificar la máquina que uno usa dentro del
sistema completo. Para eso se usa normalmente el
protocolo IP (Internet Protocol) que establece un sistema
de numeración para identificar a las computadoras en el
Internet. Esta dirección IP consta de cuatro números
entre 0 y 255 separados por puntos, permitiendo a
nuestro software de red conectarse al sitio deseado a
través de esta dirección, la cual es propia de mi
máquina. Para facilitar el acceso a estas direcciones, se
asocia un hostname a una dirección IP, para facilitar las
cosas a los usuarios.
FTP – Transferencia de archivos
FTP es un protocolo de transferencia de archivos a través
de la red. Un servidor FTP permite a los clientes
conectarse de manera anónima y navegar y descargar
los archivos disponibles. Existe un gran número de
aplicaciones FTP para Linux, tanto para consola como en
ambiente X-Window.
Pontificia Universidad Católica de Valparaíso
Facultad de Ciencias Básicas y Matemáticas
Instituto de Química
Carrera de Bioquímica
Introducción a la Bioinformática
BQA 449
Linux El Sistema Operativo
8
Telnet y SSH
Telnet es un protocolo que permite a un usuario conectarse a un computador remoto como si estuviese realmente allí,
permitiendo el acceso a nuestros archivos y trabajar con ellos desde cualquier parte del mundo a través de una conexión
por Internet. Sin embargo, frente a Telnet, SSH (secure shell) ofrece sesiones remotas encriptadas que permiten una
conexión mucho más segura (aunque no infalible) y con la misma funcionalidad.
Comandos - Trabajo remoto
lynx – navegador web por consola
Es un navegador de uso general, muy sencillo y liviano, que funciona bajo consola, muy útil cuando no se tiene
acceso a X-Window. Lynx solo muestra texto en un formato simple, sin imágenes, animaciones, applets, banners o addons.
$ lynx www.google.cl
ssh – secure shell (conexión segura por shell)
Es la mejor forma de trabajar de forma remota en la shell de un computador (llamado servidor) al que no se tiene
acceso físico a través de otro computador (llamado cliente). Otorga una interfaz por consola, de la misma manera que si
uno estuviera trabajando físicamente en ese computador. Funciona mediante cuentas de usuario existentes en el
computador a cual conectarse, y lo identifica por su IP. Además existe la opción de activar la transferencia de gráficos (XForwarding), o sea utilizar programas que usen el servidor X.
$ ssh –l felipe 158.251.6.4 –X
Con la opción –l, se indica el nombre de usuario, y con la opción –X, se activa la transferencia de gráficos. El IP indicado
corresponde a la dirección del servidor al cual deseamos conectarnos.
Pontificia Universidad Católica de Valparaíso
Facultad de Ciencias Básicas y Matemáticas
Instituto de Química
Carrera de Bioquímica
Introducción a la Bioinformática
BQA 449
Linux El Sistema Operativo
9
8
scp – transferencia de archivos por ssh
Este programa forma parte de las aplicaciones de ssh y permite copiar archivos de un computador a otro. Muy útil
cuando se quieren respaldar archivos del servidor por medio de disquetes, pendrives o cds (puesto que no se tiene acceso
físico al servidor pero sí al computador cliente).
$ scp [email protected]:/home/felipe/conf.d /home/bioinfo
Con este comando estamos copiando el archivo “conf.d” que se encuentra en el directorio “/home/felipe” del usuario
“felipe” en el computador “158.251.6.4” hasta el directorio local (en el computador cliente) “/home/bioinfo”. Puede usarse
para copiar carpetas con todo su contenido (modo recursivo) con el modificador –r.
wget – descarga de archivos desde Internet
Programa ampliamente usado Linux para descargar a través de consola un archivo desde Internet. Puede utilizar
protocolo http como ftp.
$ wget http://mirror.ucv.cl/gentoo/distfiles/emboss-3.0.tar.gz
Tiene la opción de continuar con descargas incompletas mediante el modificador –c.
Pontificia Universidad Católica de Valparaíso
Facultad de Ciencias Básicas y Matemáticas
Instituto de Química
Carrera de Bioquímica
Introducción a la Bioinformática
BQA 449