Notas de Linux

Anuncio
Astronometrı́a II - Año 2011
Breve introducción a
LINUX
Introducción
Elementos técnicos
La computadora es capaz de retener información en la memoria, que es un dispositivo interno compuesto
por celdas individuales (bytes) capaces de representar información usando el sistema binario, basado en
pulsos eléctricos. Durante la ejecución de un programa, la memoria se puede leer y escribir.
Los cómputos se realizan en la unidad central de proceso (CPU - Central Processor Unit), que accede y
manipula las entradas de las unidades de memoria.
La información se puede almacenar de forma permanente en los discos. Éstos son soportes magnéticos de
distintos tamaños. Los discos internos de la computadora se llaman discos duros.
Otros dispositivos son el teclado, que se utiliza para ingresar datos, y el monitor, que muestra los resultados
y hace más fácil el manejo de los programas.
Primer contacto
Para entrar a la cuenta ”astrometria2” de las máquinas del labopratorio se debe ingresar en la pantalla de
inicio el nombre de la cuenta (user): astrometria2. Inmediatamente se le pedirá al usuario que ingrese la
palabra clave (password) que en este caso es: astrometria2. En el curso del cuatrimestre se abrirán cuentas
personales y se informarán las claves.
Lo primero que aparece es una terminal. Las terminales de las plataformas UNIX (o la variante LINUXpara
PC) permiten ejecutar comandos. Si no aparece una terminal, se puede abrir una usando el mouse.
En la terminal aparecerá una serie de caracteres, el prompt, que puede tener una forma similar a:
[astrometria2@clueby6]#
Para resolver el ejercicio 1 de la guı́a, primero hay que escribir el archivo de texto. Se puede, por ejemplo,
crear y editar el archivo ej01.f90.
[astrometria2@tom]#vi ej01.f90
la terminación ”f90” es la que corresponde a los programas escritos en lenguaje FORTRAN. Una vez que
hemos terminado de escribir el programa, hay que compilarlo. El compilador es un programa que lee un
archivo de texto y lo usa para generar un archivo ejecutable. El nombre del compilador es ifort, y la
sintaxis para compilar es:
[astrometria2@clueby6]#ifort ej01.f90 -o ej01.exe
1
Breve introducción a LINUX
El archivo ej01.f se llama archivo fuente, y ej01.exe es el archivo ejecutable, para ejecutarlo hay que
escribir:
[astrometria2@clueby6]#./ej01.exe
Resulta conveniente tener cierto orden en el manejo de los archivos. Los directorios son muy útiles para
eso. Éstos son algunos de los comandos de UNIX para ver y manejar archivos y directorios:
ls Lista los archivos que hay en el directorio en el que está posicionado el prompt.
cp Copia un archivo de un directorio a otro, o bien crea una copia de un archivo, con otro nombre.
mv Mueve un archivo a otro directorio, o le cambia el nombre.
mkdir Crea un directorio.
rmdir Borra un directorio, si esta vacı́o.
cd Cambia de directorio. Para ir a un directorio superior, se escribe cd.., y para ir a uno que está en la
parte infeior del árbol de directorios, se escribe cd <nombre del directorio>.
⊲ e.g./ El grupo 1 quiere crear un directorio llamado grupo1, y colocar allı́ una copia del archivo
linux tutorial.pdf.
[astrometria2@clueby6]#mkdir grupo1
[astrometria2@clueby6]#cp apuntes/linux_tutorial.pdf grupo1/
[astrometria2@clueby6]#cd grupo1
[astrometria2@clueby6]#ls
Aparecerá en pantalla la lista de archivos en este directorio, en este caso, sólo el archivo
linux tutorial.pdf.
Para abrir el archivo se necesita un programa especial, que en este caso se llama gv.
En el archivo linux tutorial.pdf (especialmente el cap. 3) el lector podrá encontrar todo el material
necesario para un manejo razonable del sistema operativo LINUX
El sistema operativo UNIX
Desarrollo de UNIX/Linux
Una forma simple de definir un Sistema Operativo (SO), es decir que es un programa que administra el
software y el hardware de una computadora para el usuario. El usuario interactua con un SO a través de
una interfaz de usuario que permite que el SO reciba e interprete instrucciones enviadas por el usuario.
Dicha interfaz de usuario puede ser tan simple como ingresar comandos en una linea, o tan compleja como
seleccionar menues e iconos.
Un SO también administra aplicaciones de software, como por ejemplo, un editor de texto. El editor de
texto es un programa que consta de instrucciones que debe ejecutar la computadora; para usarlo, se debe
2
Astronometrı́a II
cargar en la memoria de la computadora y después se ejecutan las instrucciones. El SO controla la carga y
ejecución de todos los programas.
Otra caracterı́sitca común a todos los SO, es la de administrar archivos, programas e interaccionar con el
usuario, Linux (al igual que UNIX) agrega las caracterı́sticas de multitarea y multiusuario (el sistema puede
realizar varias tareas al mismo tiempo, y varios usuarios pueden conectarse al sistema simultáneamente).
En cierto modo, LINUXes un derivado de UNIX, pero para poder comprender la diferencia, debemos
entender el entorno en el que se desarrollo UNIX. UNIX surge en un ambiente académico y de investigación,
por lo que es ideal para ámbitos de trabajo de este tipo; aunque es sofisticado, fue diseñado desde un
principio para ser flexible, de manera que se pueda modificar facilmente. Hoy en dia, distintas compañı́as
privadas tienen sus propias versiones oficiales de UNIX (IBM, Sun, HP) para estaciones de trabajo. Dentro
de este contexto es que se desarrolló LINUXy, en este sentido, es una versión de UNIX para PC. El hecho
de que Linux sea libre puede producir la impresión errada de que es un SO menos profesional, cuando en
realidad, es una versión de UNIX para PC y estaciones de trabajo y se lo considera más estable que otros
SO más generalizados como Windows. Linux es un SO libre, no gratuito. Muchas compañias pueden ofrecer
a la venta distintas versiones de Linux, con distintas utilidades, pero siempre el código estandar bajo la
licencia de Software Libre.
Surgimiento de UNIX
Nota: Esta sección es sólo informativa y se puede omitir.
El desarrollo de UNIX comienza a finales de 1960. En 1968, un grupo de investigadores de General Electrics,
AT&T Bell Labs., y el Massachusetts Institute of Technology desarrollaron un proyecto de investigación en
SOs llamado MULTICS (MULTiplexed Information Computing Systems) que incorporó muchos conceptos
nuevos en multitareas, administración de archivos e interacción con el usuario. En 1969, Ken Thompson,
Dennis Ritchie e investigadores de AT&T Bell Labs. desarrollaron el SO UNIX incorporando muchas caracterı́sticas de las desarrolladas en MULTICS; desde un comienzo, UNIX fue un SO multitarea y multiusuario
y muy eficiente
El sistema UNIX se popularizó en los laboratiorios Bell; en 1973 Dennis y Ritchie re-escribieron el código
de UNIX en un lenguaje de programación que habı́a creado Ritchie (el lenguaje C), con el fin de ser
una herramianta flexible para el desarrollo de programas. El lenguaje C permitió que se escribiera una
versión única del SO UNIX que luego podı́a compilarse, por medio de compiladores de C, en diferentes
computadoras. Consecuencia: el SO UNIX se volvió portatil, capaz de funcionar en cualquier computadora
con poca o ninguna reprogramación.
En un principio, UNIX se consideró un producto de investigación. Las primeras versiones se distribuyeron
gratuitamente a muchas universidades de prestigio, durante los 70’ Laboratorios Bell comenzó a entregar
versiones oficiales con licencia para diferentes usuarios; uno de estos usuarios, fue el departamento de
ciencias de la Universidad de California en Berkeley (allı́ se agregaron muchas caracterı́sticas nuevas que
luego se volverı́an estándares) que luego lanzarı́a su propia versión de UNIX conocida por Berkeley Software
Distribution (BSD).Microsoft también desarrolló una versión de UNIX para PC llamada Xenix. AT&T
desarrolló varias versiones de UNIX, a principios de los 80’ sacó al mercado la primera versión comercial
3
Breve introducción a LINUX
llamada ’System 3 ’, a la que le siguió la ’SystemV ’.
A finales de los 70’, la versión BSD UNIX fue la base del proyecto de investigación de la Advanced Research
Projects Agency (DARPA) del Departamento de Defensa de los EE.UU; como resultado, en 1983, Berkeley
lanza una versión poderosa de UNIX llamada BSD 4.2 que incluı́a una sofisticada administración de archivos
y herramientas de redes (protocolos TCP/IP, usados hoy en dı́a en la red internet). Esta versión fue adoptada
también porSun Microsystems.
La proliferación de las versiones de UNIX hizo necesario un estándar; a mediados de los 80’, los dos
estándares en competencia eran la versión de AT&T y la BSD. AT&T trasladó el desarrollo de UNIX a una
nueva organización llamada ’UNIX System Laboratories’ que se dedico a desarrollar el sistema estándar,
en 1991 desarrolla el SystemV, versión 4 que incorporaba todas las caracterı́sticas de SystemV, versión 3,
SunOS y Xenix. Paralelamente, compañı́as como Digital Equipment Corporation (DEC) y Hewlett-Packard
(HP) establecieron la Open Source Fundation (OSF) para crear su propia versión de UNIX, esta co-alición
se formó para evitar que AT&T y Sun dominen la titularidad y desarrollo de UNIX (consecuentemente, el
futuro de UNIX).
Se encontraban entonces dos versiones comerciales: OSF y SystemV, versión 4. En 1993, la UNIX System
Laboratories de AT&T pasa a ser “UNIX System Groups” de Novell, entidad que produjo sus propias
versiones de UNIX (UnixWare para sistemas NetWare de Novell, etc). Sun Microsystems introdujo el
SystemV, versión 4 en sus SO Solaris. Hoy en dı́a, la mayor diferencia entre estas dos lı́neas de UNIX son
las plataformas de hardware que soportan y su performance, otras diferencias son meramente ”cosméticas”.
En la actualidad, existen más de 50 versiones de UNIX disponibles, la mayorı́a de ellas están diseñadas
para aplicaciones especı́ficas (e.g. UNIX UNICOS, diseñado especı́ficamente para las supercomputadoras
de Cray Research). Todas estas versiones de UNIX, de alguna manera, estan basadas en las 9 versiones
más importantes: Linux, AIX, Digital UNIX, FreeBSD, HP-UX, IRIX, NetBSD, SCO Unixware y Solaris.
Linux se diseñó especı́ficamente para computadoras personales basadas en Intel; se inició como un proyecto
personal de un estudiante llamado Linus Trovalds en la universidad de Helsinki. En esa época, se utilizaba
un programa llamado “Minix”, que fue creado por Andrew Tannebaum y se distribuı́a a todo el mundo a
través de Internet, contaba además con diferentes caracterı́sticas de UNIX. La idea de Trovalds fue crear
un SO (en particular, para los usuarios de Minix) que tuviera las versatilidades y la potencia de UNIX, pero
para PC; decidió llamar a ese SO: LINUX, y en 1991 lanzó la versión 0.11.
LINUXse
distribuyó ampliamente a través de Internet y durante estos años, otros programadores lo depuraron y le hicieron adiciones incorporando la mayorı́a de las aplicacione y caracterı́sticas que ahora se
encuentran en los sitemas UNIX estándar (administradores de ventanas, utilidades de Internet, compiladores, depuradores, etc., etc.). Linux ha sido desarrollado en el entorno abierto y gratuito de Internet,
además se ajusta a los estándares oficiales de UNIX. Debido a la proliferación de versiones de UNIX, el Institute of Electrical and Electronics Engineers (IEEE) desarrolló un estándar independiente para el American
National Standards Institute (ANSI) que se denominó “Portable Operating System Interface for Computer
Enviroments” (POSIX). El estándar define cómo debe operar un sistema UNIX, POSIX define un estándar
universal al que deben ajustarse todas las versiones de UNIX. Linux se desarrolló en un principio con base
en ese estándar.
4
Astronometrı́a II
Anatomı́a de LINUX
Linux puede dividirse en tres componentes principales: el kernel (núcleo), el entorno, y la estructura de
archivos. El kernel es el programa base que dirige otros programas y administra el hardware. El entorno
ofrece una interfaz para el usuario, recibe comandos de éste y envı́a otros comandos al kernel para su
ejecución. La estructura de archivos organiza la manera en como se almacenan los archivos en un dispositivo
de almacenamiento. Con éstas tres partes básicas del SO, un usuario puede dirigir programas, administrar
archivos e interactuar con el sistema.
El entorno, es un intérprete de comandos que capta los comandos que introduce el usuario y los envı́a al
kernel. Linux ofrece varias clases de entornos: escritorios, administradores de ventanas y shells de lı́nea de
comando, tal que el usuario los puede ajustar a sus necesidades especiales. En este sentido, LINUXfunciona
más como un entorno operativo que el usuario puede controlar.
La interface del shell es muy sencilla; por lo común consta de un prompt en donde el usuario escribe el
comando y luego presiona la tecla ENTER del teclado, en cierto sentido, se está ecribiendo el comando
en lı́nea de comandos. Dichos comandos pueden ser tan simples como una palabra de dos caracteres (e.g.,
“ls”), hasta comandos de varias lı́neas de longitud. En la actualidad, los tres shells más importantes son el
Bourne Shell (de Bells Laboratories para SystemV), el Korn Shell (una ampliación de Bourne) y el C-shell
(de la versión BSD de UNIX). Linux utiliza versiones ampliadas o de dominio público, de dichos shells:
Bourne Again (bash), TC-shell (tcsh) y Public Domain Korn (pdksh), entre otros.
Distribuciones LINUX
Aunque sólo hay un estándar de Linux, en realidad existen diferentes versiones. Distintas compañı́as y
grupos han creado paquetes de Linux, y software de Linux, en forma ligeramente diferente. Se diferencian
por ejemplo en la forma de instalación, la cantidad y tipo de paquetes que contiene o los programas que
se instalan por defecto. Algunas de estas versiones son, por ejemplo, Red Hat, OpenLinux, Suse, Debian,
Slackware, Conectiva, Mandrake, Fedora, etc.
En Internet, pueden encontrarse numerosos sitios con información a cerca de Linux:
http://www.gnu.org
http://www.linuxworld.com
http://www.linuxdoc.org
http://www.linuxtoday.com
http://www.linuxpower.org
http://www.linuxworld.com
http://www.linuxjournal.com
http://www.slashdot.org
http://www.linuxprogramming.com
http://metalab.unc.edu/LDP
http://www.lwn.net
http://www.linuxfocus.org
http://www.linuxmagazine.com
http://www.linuxmall.com
http://www.linux.org
http://www.webwatcher.org
Primeros pasos en Sistema Operativo Linux
Un SO tiene como tarea principal dirigir el flujo de información de y hacia el hardware; un SO como
LINUXse divide en las siguientes partes:
5
Breve introducción a LINUX
-Manejador de memoria: Determina cuanta memoria esta disponible para cada programa y soluciona los
posibles problemas que esta actividad pueda causar.
-Scheduler : Decide qué y cual programa de usuario se ejecutará, y durante cuanto tiempo.
-Sistema de archivos: Localiza, maneja y administra los archivos en los medios de almacenamiento.
-Controlador de dispositivos: Se encarga de controlar los dispositivos del hardware que están a cargo del
SO.
La interacción entre el usuario y el SO se realiza a través de tres dispositivos estándar que son los siguientes:
-Salida estándar : Dispositivo en el que un dado comando arroja los comandos, generalmente es la pantalla
a menos que se especifique otra cosa.
-Salida de error estándar : Es el dispositivo en donde los comandos arrojan los mensajes de error. Usualmente, también corresponde a la pantalla.
-Entrada estándar : Es el dispositivo del que se espera recibir los datos. Usualmente corresponde al teclado.
El kernel es el grupo más importante de programas que hacen al SO. El problema del kernel, es que sólo
entiende el lenguaje binario, y es en este punto donde las interfaces de usuario (i.e. shell’s, escritorios
e ı́conos) juegan un papel importante. Las interface realizan el trabajo de traductores, y convierten las
instrucciones que el usuario le dá al SO (comandos redactados con caracteres ASCII, un click del mouse,
etc.) a un lenguaje que el kernel pueda entender.
Las funciones más importantes del shell son:
Contar con comandos auto-construidos
Creación de scripts (lenguaje de programación)
Definición de variables: Locales y de ambiente.
Poder redireccionar comandos
Poseer caracteres comodines
Trabajar con ”pipes”: Dar de entrada a un comando, la salida de otro
Poder ejecutar sub-shells
Permitir procesos de fondo
Sustitución de comandos
Cuando se crea una cuenta de usuario en el SO, dicha cuenta se crea con los siguientes parámetros -deben
definirse obligatoriamente para los usuarios del sistema:
login (nombre de la cuenta)
6
Astronometrı́a II
UID (User ID: número de identificación del usuario (no existen dos iguales)
GID (Grup ID: número de identificación del grupo por defecto al que pertenece el usuario)
Nombre Apellido (Nombre completo del usuario)
/directorio/home (”home” del usuario: rama de la estructura de directorio en donde estara el usuario
en el momento de entrar al sistema)
/bin/shell (el shell por defecto que tendrá el usuario al momento de ingresar al sistema).
Una vez que el SO ha aceptado el ingreso del usuario al sistema, lo primero que hace es ejecutar el shell
definido en la cuenta, con lo que el usuario verá un prompt, que puede cambiar dependiendo del shell
asignado al usuario y un cursor en la lı́nea de comandos donde se podrán ejecutar los comandos.
Uno de los comandos más utiles del SO, y el que más debe saber usar y conocer cualquier usuario de
LINUX, es el comando man que muestra en la salida estándar un manual del comando que se ingresó como
argumento:
[astrometria2 clueby6]# man man
[astrometria2 clueby6]# man -k dvi
[astrometria2 clueby6]# man comd -S awk
manual del comando man
lista de comandos cuyo manual contiene la palabra dvi
página n del manual del comando awk
Existen una serie de comandos que le permiten al usuario moverse por el sistema y trabajar con archivos,
por ejemplo: pwd, cat, ls, cd, mv, mkdir, cp, rm, etc.
REFERENCIA RÁPIDA DE COMANDOS UNIX
La siguiente lista de comandos pretende ser de utilidad como referencia rápida para utilizar comandos de
sistema. Se ha agrupado en dos: los comandos de sistema corrientes y los relacionados con la administracion.
Comandos de sistema
ls =list. listar contenido de directorios. e.g.: ls, ls -l, ls -fl, ls –color
cp =copy. copiar ficheros/directorios. e.g.:cp -rfp directorio /tmp, cp archivo archivoNuevo
rm =remove. borrar ficheros/directorios. e.g.: rm -f fichero, rm -rf directorio, rm -i fichero
mkdir =make dir. crear directorios. e.g.: mkdir directorio
rmdir =remove dir. borrar directorios, deben estar vacios. e.g.: rmdir directorio
mv =move. renombrar o mover ficheros/directorios. e.g.: mv directorio directorio, mv fichero nuevoNombre, mv fichero aDirectorio
date gestion de fecha de sistema, se puede ver y establecer. e.g.: date, date 10091923
history muestra el historial de comandos introducidos por el usuario. e.g.: history — more
more muestra el contenido de un fichero con pausas cada 25 lineas. e.g.: more fichero
7
Breve introducción a LINUX
grep filtra los contenidos de un fichero. e.g.:cat fichero — grep cadena
cat muestra todo el contenido de un fichero sin pausa alguna. e.g.: cat fichero
chmod cambia los permisos de lectura/escritura/ejecucion de ficheros/directorios. e.g.: chmod +r fichero,
chmod +w directorio, chmod +rw directorio -R, chmod -r fichero
chown =change owner. cambia los permisos de usuario:grupo de ficheros/directorios. e.g.: chown root:root
fichero, chown pello:usuarios directorio -R
tar =Tape ARchiver. archivador de ficheros. e.g.: tar cvf fichero.tar directorio , tar xvf fichero.tar, tar zcvf
fichero.tgz directorio, tar zxvf fichero.tgz
gunzip descompresor compatible con ZIP. e.g.: gunzip fichero
mount montar unidades de disco duro, diskette, cdrom. e.g.: mount /dev/hda2 /mnt/lnx, mount /dev/hdb1
/mnt -t vfat
umount desmontar unidades. e.g.: umount /dev/hda2, umount /mnt/lnx
wget programa para descargar ficheros por http o ftp. e.g.: wget http://www.rediris.es/documento.pdf
lynx navegador web con opciones de ftp, https. e.g.: lynx www.ibercom.com, lynx –source http://www.ibercom.com/script.s
— sh
ftp cliente FTP. e.g.: ftp ftp.ibercom.com
who muestra los usuarios de sistema que han iniciado una sesion. e.g.: who, w, who am i
mail envio y lectura de correo electronico. e.g.: mail [email protected] ¡fichero, mail -v [email protected]
¡fichero
sort ordena el contenido de un fichero. e.g.: cat /etc/numeros — sort, ls — sort
ln =link. para crear enlaces, accesos directos. e.g.: ln -s /directorio enlace
tail muestra el final (10 lineas) de un fichero. e.g.:tail -f /var/log/maillog, tail -100 /var/log/maillog —
more
head muestra la cabecera (10 lineas) de un fichero. e.g.: head fichero, head -100 /var/log/maillog —
more
file nos dice de que tipo es un fichero. e.g.: file ej01.exe, file *
Comandos de administración
df = disk free. espacio en disco disponible. Muy util. e.g.: df, df -h
du =disk use. uso de disco. Muestra el espacio que esta ocupado en disco. e.g.: du *, du -sH /*, du -sH
/etc
uname =unix name. Informacion sobre el tipo de unix en el que estamos, kernel, etc. e.g.: uname, uname
-a
8
Astronometrı́a II
ps =proccess toda la informacion sobre procesos en ejecucion. e.g.: ps, ps -axf, ps -A, ps -auxf
free muestra el estado de la memoria RAM y el SWAP. e.g.: free
ping heramienta de red para comprobar entre otras cosas si llegamos a un host remoto. e.g.: ping
mail.oac.uncor.edu
Combinaciones útiles
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 [email protected] ¡fichero.conf Con esto nos enviamos rapidamente un fichero de sistema a
nuestra cuenta.
mail -v [email protected] 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..)
more Al hacer more: /cadena : podemos hacer busqueda de cadena f : adelante b: volver arriba v: iniciar
vi en la linea que estamos
9
Descargar