Cuaderno Practicas I
Cuaderno Practicas I
Comandos UNIX/Linux
Sistema Operativo Linux Ubuntu
INDICE DE CONTENIDOS
2. HERRAMIENTAS
Se utilizará el software. Esta herramienta es un software para trabajar con máquinas
virtuales. Dispondréis de una máquina virtual para realizar las prácticas propuestas en la
asignatura.
2.1. Descarga e instalación del software
El objetivo de este apartado es instalación de una distribución del sistema operativo
Linux Ubuntu en una máquina virtual desde donde podréis trabajar y hacer los ejercicios y
las prácticas. La aplicación VmWare Player 3.1.1 282343 es un programa de libre
distribución y se emplea para creación de máqinas virtuales. Se encuentra disponible en
http://vmware-player.softonic.com/. Deberéis descargarla e instalarla en el ordenador de
trabajo.
Una vez que tengáis instalada la aplicación estaréis en disposición de poder crear
máquinas virtuales con cualquier tipo de sistema operativo, de forma que podréis trabajar
con sistemas operativos sin preocuparos de si su uso afecta al hardware real, ya que está
máquina es una emulación del hardware real.
A continuación buscaréis una distribución del sistema operativo que queréis instalar. En
nuestro caso trabajaremos con Linux Ubuntu. Desde la página
http://ubuntu.softonic.com/linux podréis descargar la versión 10.04. Se podrá trabajar con
distribuciones anteriores, pero a partir de la 9.
9. Continúa la instalación
13. Podemos maximizar la ventana y con CTRL + ALT retornar al sistema operativo de
base.
3. Puede que nos pida que creemos un nuevo identificador de la máquina en vuestro
lugar de de trabajo (os recuerdo: de manera temporal en el pc o en vuestro usb). En
ese caso respondemos a CREATE.
4. A la pregunta de si queremos actualizar el programa le decimos CANCEL.
5. Comienza a arrancar el sistema:
7. Puede que salgan mensajes diciendo que la tarjeta de sonido no está disponible. Los
vamos solventando. Luego aparecerá el sistema cargado con la siguiente interfaz
gráfica:
4. EL SISTEMA LINUX
Linux es un clon de Unix en el dominio público destinado a los procesadores Intel. Linux ha
ganado en popularidad regularmente y es muy útil en varias situaciones: es un sistema Unix
poco costoso que puede constituir un ambiente de investigación para los colegios y
universidades, una solución económica para contar con una conexión Internet para las
empresas pequeñas, un sistema Unix doméstico para los profesionales y una terminal X
barata para los sitios Unix con presupuesto reducido.
El núcleo fue desarrollado por Linux Torvaldas, (Linux es el Unix de Linus, Linus Unix)
aunque otras personas han contribuido (y contribuyen) a su desarrollo. Linux es globalmente de
tipo BSD.
Técnicamente, el nombre de Linux hace referencia al corazón del sistema operativo (el
núcleo y algunos controladores de periféricos) pero eso nombre también se aplica al s ftware
de dominio público, donde las fuentes son de origen variado, que constituyen una distribución.
Fichero que contiene la tabla del sistema de archivos que se monta en cada arranque.
Contiene un sistema de archivos por línea. Los campos de cada línea están separados
por blancos o tabuladores y son, en el orden en el que se encuentran:
1. Dispositivo donde se va a montar.
2. Punto de montaje (normalmente es un directorio)
3. Tipo de archivo que se va a montar (iso9660, swap, ext2,etc.)
4. Opciones de montaje: la más corriente es default.
o /etc/securetty
Fichero que contiene los terminales habilitados para acceder con root.
o /etc/lilo.conf y grub.conf
Configuran los respectivos gestores de arrnque
o /dev/null
Es un fichero y también un dispositivo que no contiene nada y no sirve para nada. Es un
agujero negro que utilizamos para enviar todo lo que no sirve.
o /etc/init.d
Contiene todos los script que inician los demonios del sistema.
o /etc/xinetd.d
Contiene los script que inician los servicios que el demonio xinetd (servicios de red)
controla.
o /etc/passwd
Contiene la lista de los usuarios dados de alta en el sistema. Los campos son los
siguientes, en este orden y separados por “:”:
1. login
2. contraseña encriptada (relamente el password se encuentra en (etc/shadow)
3. UID (identificador de usuario)
4. GIP (identificador de grupo)
5. nombre completo
6. shell usado
7. Ruta de directorio o donde el usuario guarda sus documentos (home)
o /etc/group
Contiene los grupos dados de alta
o /etc/sysconfig
Archivos con las configuraciones más importantes
o El directorio /var/log contiene la mayoría de los archivos log del sistema que se
encargan de almacenar los mensajes que el kernel o los demonios van lanzando.
o Los archivos de configuración .profile y /etc/profile son script de inicialización del
entorno de usuario. El .profile lo tiene cada usuario en su directorio home y se
ejecuta cada vez que el usuario accede al sistema. Se utiliza para configurar las
sesiones de trabajo de acuerdo con las preferencias propias de cada usuario. El
/etc/profile es propiedad del sistema y se ejecuta antes del .profile de cada usuario.
Prepara el entorno de los usuarios de forma global. El fichero /etc/profile puede ser
leído por todos los usuarios. Cualquier modificación de este fichero la debe realizar el
Administrador del sistema porque modificará el entorno de todos los usuarios
globalmente.
o En general, todos los archivos .conf son configuraciones particulares de un servicio o
un dispositivo.
o /etc/bash.bashrc y ~/.bashrc : se ejecutan cuando se lanza el shell bash después
de los profile.
6.1.1. El shell
Se accede como indicamos anteriormente:
estándar (el teclado). Unix permite redireccionar las entradas/salidas estándar a partir
de los delimitadores angulares:
< redirección de la entrada estándar.
> redirección de la salida estándar (creación)
>> redirección de la salida estándar (añadir)
2> redirección de los errores
prueba archivo
dhccpc1: ~# who
rogomez console Oct 12 09:09
rogomez ttyp0 Oct 12 10:38
toto ttyp1 Oct 12 11:08
dhccpc1: ~#
se pudo haber tecleado como:
dhccpc1: ~# date; ls -C; who
Wed Oct 12 10:44:16 MET 1986
prueba archivo
rogomez console Oct 12 09:09
rogomez ttyp0 Oct 12 10:38
toto ttyp1 Oct 12 11:08
dhccpc1: ~#
6.3.5. Pipelines
En algunas ocasiones es importante que el resultado de la ejecución de un
comando sea la entrada de otro. Una opción para resolver lo anterior es utilizar
redirecciones, la salida del comando enviarla a un archivo y la entrada del otro
comando redireccionarla con respecto a dicho archivo.
La salida estándar de un comando puede ser conectada a la entrada estándar de
otro comando a través de lo que se conoce como pipelines. Un pipeline es un puente
de comunicación entre la salida de un proceso y la entrada de otro. Es representado
por una línea vertical. La sintaxis del pipeline es:
comando [ ] [ ] | [ ] [ ] | comando [ ] [ ]
Un ejemplo de uso del pipeline es el siguiente:
dhccpc1: ~# cat numeros
uno un
dos deux
tres trois
cuatro quatre
cinco cinq
dhccpc1: ~# cat numeros | grep dos | more
dos deux
dhccpc1: ~#
En este caso la salida del comando cat es la entrada del comando grep y la
salida de este es la entrada del comando more el cual al final lo imprime en pantalla.
Comando Uso
env Índice de todas las variables
definidas en el entorno
export <VARIABLE> Exporta una variable al entorno.
Podemos referirnos a ella mediante
$VARIABLE
set Lee y escribe variables de entorno
dhccpc1: ~# env
Comando Uso
Ctrl+C Interrumpe el comando activo
Ctrl+Z Ctrl+Z : Suspende el comando activo, con fg Se
reanuda y con bg se lleva a segundo plano
Ctrl+D Abandona sesión actual, similar a exit
Ctrl+W– Borra una palabra en la línea actual
Ctrl+U Borra toda la línea
!! Repite el último comando
exit Abandona la sesión actual
7. COMANDOS BASICOS
7.1. Apagar el sistema
Algunos comandos relacionados con el arranque y apagado de la máquina. Conviene
usarlos con cuidado.
Comando Uso
shutdown – r <hora> Especifica un momento para el
apagado automático del sistema.
Con now iniciará el apagado
instantáneamente.
reboot Reinicia el sistema.
halt Detiene el sistema para su posterior
apagado.
Comando Uso
Por ejemplo:
dhccpc1: ~# man sort
Comando Uso
ls Listar contenido de un directorio :
Los sistemas de ficheros de tipo Unix permiten crear enlaces entre fichero. os enlaces
pueden ser de dos tipos, duros y simbólicos (hard links, symbolic link también llamados hard
link y soft link).
El primer caso consiste en asignar más de un nombre a los mismos datos en disco.
Este nombre aparece como un fichero nuevo al hacer ls , e incluso puede residir en el mismo o
en otro directorio, pero los datos son los mismos, simplemente el fichero con el nuevo nombre
está apuntando a los mismos datos en disco que el fichero original. Por tanto no consume más
espacio en disco, excepto el necesario en la tabla de i-nodes (un i-node es el identificador físico
de los datos de un fichero en disco). Este tipo de enlace (hard link) solo es válido para ficheros
que estén en el mismo sistema de ficheros (partición).
Los enlaces simbólicos son ficheros que apuntan a otro fichero o directorio, en el
mismo o en otro sistema de ficheros. La diferencia, a parte de poder referenciar fuera del
sistema de ficheros actual, es que éstos crean un pequeño fichero en disco que almacena la
dirección del fichero apuntado. Por tanto utilizan espacio en disco. La dirección esta formada
por referencias al sistema de ficheros y a la ruta donde se encuentra el fichero apuntado. Los
datos del fichero no se copian de nuevo al crear el link simbólico, solo se referencian.
Hard links
Usamos el comando ln para crear hard links.
Crear un fichero llamado mesa con cierto contenido. Ahora si usamos ls –i vemos el
número de inodo para nuestro fichero mesa.
Ahora vamos a crear un enlace llamado silla: ln mesa silla . Con ls –i vemos que los
dos ficheros tienen el mismo inodo. Vemos que los dos ficheros tienen el mismo i-node, por lo
que están apuntando al mismo bloque de datos (fichero) en disco.
Si borramos un fichero con rm, solamente se borrará el enlace al fichero.
rm mesa no borra los datos en disco (el fichero), solo elimina el fichero de la tabla de ficheros
que apuntan a i-nodes.
Veamos esto con un poco más de calma. Cuando un fichero se crea, se almacenan sus
datos en el disco y se le asigna un i-node, luego se registra el nombre del fichero en una
tabla de ficheros. En esta tabla están (a parte de más cosas) el nombre del fichero y el puntero
a sus datos.
Ahora cuando se crea un hard link, solo se da de alta otro fichero en dicha tabla
apuntando al mismo i-node o bloque de datos, a los datos del fichero. Vemos ahora que si
borramos uno de los dos ficheros con rm¸ sólo lo estamos eliminando de la tabla de ficheros,
no estamos eliminando el fichero en si (los datos, vaya).
Será el último rm que se realice sobre el fichero el que elimine realmente los datos del
disco. (y el nombre de la tabla, claro).
Soft Links
El comando ln –s mesa silla crea un enlace simbólico silla que apunta a mesa. Si
realizamos un ls –l vemos que el fichero silla es un enlace simbólico y además el primer
carácter del grupo de permisos es ‘l’ que indica este hecho. Vemos que todos los permisos
aparecen activados. Esto no significa que se pueda hacer todo por todos sobre el enlace
simbólico, pues realmente los permisos que se tienen en cuenta son los del fichero apuntado.
Funcionalmente, los enlaces duros y simbólicos son similares, pero hay algunas
diferencias. Por una parte, puede crear un enlace simbólico a un fichero que no está en el
mismo dispositivo de almacenamiento, por ejemplo a un fichero en un cd-rom, cosa que no es
cierta con un hard link. Los enlaces simbólicos son procesados por el núcleo del sistema
operativo de forma diferente a los duros, lo cual es solo una diferencia técnica, pero a veces es
importante. Los enlaces simbólicos son de ayuda puesto que identifican al fichero al que
apunta; con enlaces duros no es tan fácil saber que fichero está enlazado al mismo i-nodo.
Los enlaces se usan en muchas partes del sistema operativo. Los enlaces simbólicos
son especialmente importantes para las imágenes de las librerías compartidas en /lib.
Directorio Contenido
/bin Contiene los ficheros ejecutables esenciales del sistema.
/dev Alberga los controladores de dispositivo usados para acceder a elementos
como discos duros, modems......
/etc Información y programas. Se encuentran archivos de configuración del sistema
como “profiles”, “hosts” o “bashrc”
/sbin Ordenes ejecutables sólo por el administrador
/home Directorio de usuarios
/lib Librerías
/proc Estructura virtual de ficheros. Es un directorio espejo de la memoria. En
realidad los archivos ubicados allí no residen en el disco duro, con lo que no
es posible modificarlos o borrarlos.
/tmp Ficheros temporales
/usr Archivos de configuración y programas usados por el sistema
/var Históricos del sistema
/boot Información necesaria para el sistema de arranque
/cdrom Manejadores para el cd-rom
/dev/console Sistema de consola
/dev/ttyS Acceso a puertos
/dev/cua Acceso a puertos
/dev/hda Primer disco duro
/dev/sda Primer disco duro SCSI
/dev/lp0 Primer puerto paralelo
/dev/tty Consolas virtuales
/dev/pty Seudoterminales
/usr/x386 Sistema X-windows
/usr/bin Ficheros binarios o ejecutables comunes
/usr/etc Información y programas
Comando Uso
chown usuario fichero Cambia el propietario de un fichero o
directorio
chgrp grupo fichero Cambia el grupo al que pertenece un fichero
chmod modo fichero Cambia los permisos de acceso de un fichero.
chmod {a,u,g,o}{+,-} Cuando hacemos ls -l podremos verlos en la
{r,w,x} fichero primera columna. Son 10 letras o guiones que
(all,user,group,other) representan: drwxrwxrwx
d: sólo aparece si es un directorio
s: sólo aparece si es un socket
rwx: permisos de lectura, escritura y ejecución
del usuario
rwx: permisos de lectura, escritura y ejecución
del grupo
rwx: permisos de lectura, escritura y ejecución
del resto
Cuando en cualquiera de ellos aparece un
guión "-"
Permisos de ficheros
Cada fichero tiene ciertos permisos asociados a el, que indican al sistema
operativo quién puede acceder a ese fichero, cambiarlo o en el caso de ser un
programa, ejecutarlo. Cada uno de esos permisos puede ser establecido por separado
para el dueño del fichero, para el grupo al que pertenece el dueño del fichero y para el
resto de usuarios del sistema.
El modo de cambiar los permisos de un fichero es
chmod [a,u,g,o] [+,-] [r,w,x]
chmod o+w documento da a todos los usuarios permisos para escribir, borrar,
etc el documento.
Con chmod o-rw documento quitamos los permisos de lectura y escritura
para el resto de los usuarios.
Comando Uso
ps Muestra los procesos activos del usuario
top Lista todos los procesos, así como diversos
detalles de éstos (memoria consumida,
CPU utilizada). Con la tecla <q> saldremos.
bg Lista los procesos parados o en segundo
plano.
fg Lleva el proceso más reciente a primer
plano.
fg n Lleva el proceso n a primer plano
kill [señal] pid Orden para eliminar procesos.
kill - l : muestra una lista de los nombres de
señal que pueden ser utilizados.
kill -9 : Envía señal de tipo TERM con lo
que matará el proceso.
kill allproc Mata a todos los procesos.
postree Muestra el árbol de procesos, útil para
saber las dependencias de padres e hijos
nice Nos permite especificar la prioridad de un
proceso. Normalmente se utiliza para
reducir la prioridad del proceso, en el caso
de que no nos urjan los resultados.
El comando yes es un comando aparentemente inútil que envía una serie interminable
de y-es a la salida estándar y hay que pulsar CTRL+C para que pare. Puede ser útil
cuando en un programa se nos realiza una serie de preguntas y queremos responder a
todas que si, direccionando su entrada estándar al comando yes, el lo hará por nosotros.
• Ejecutar el comando yes y parar su ejecución con CTRL+C
(La tecla de interrupción se puede definir con el comando stty, y puede que en todos
los sistemas no sea la misma)
Lo que podemos hacer es que no nos moleste la aparición de y-es en la pantalla,
redirigiendo la salida del comando yes a un dispositivo especial, /dev/null con lo que ya no
aparece nada por pantalla,
• Redirigir la salida, ¿que ocurre entonces?
Pulsando la tecla interrupción podemos parar el proceso, ya que sigue ejecutándose en
primer plano, aunque no veamos nada.
Supongamos que queremos dejar que el comando yes siga pero que nosotros
podamos recuperar el prompt para seguir trabajando.
• Lanzar el comando yes > /dev/null & para dejarlo ejecutando en segundo plano.
Así que con kill %1 nos referimos al número de tarea 1 y con kill 32832 le decimos que
le envÍe la señal por defecto al proceso con PID 32832. La señal por defecto es KILL.
Una vez matada la tarea, la siguiente vez que ejecutemos jobs (pero solo esa vez, la
siguiente) aparecerá un mensaje indicando que el proceso [1] ha terminado. Si volvemos a
usar jobs ya no muestra nada.
Hay otra manera de poner una tarea en segundo plano. Se lanza el proceso, se para y
queda parada en primer plano, pero nos devuelve el prompt, se pone entonces en segundo
plano.
• Lanzar en primer plano, yes >/dev/null (SIN &) (no saldrá el prompt, recordais?)
¿Que pasa ahora si pulsamos CTRL+C o CTRL+Z? Que no nos hace caso pues
la tarea está en segundo plano. La podemos pasar a primer plano con fg y luego pararla o
interrumpirla.
Nota: los comandos fg y bg actúan sobre la última tarea parada (suspendida). Con fg %n
pasamos a primer plano la tarea n.
yes > /dev/null& // Lo ejecutamos en background
fg // Lo ponemos en foreground
CTRL+Z (suspender proceso) // Lo suspendemos (para recuperar el control)
Bg // Lo colocamos de nuevo en background
Si nuestro terminal se queda "colgado" o hay un proceso en marcha que queremos
cancelar y no se puede abortar con CTRL+C, debemos abortar el proceso del shell. Para
ello, tenemos que:
1. iniciar otra sesión (ALT+Fn si estamos en local ó con otra ventana de Putty si
estamos en remoto).
2. Visualizar los procesos de nuestro usuario: ps -u usuario
3. Matar el proceso cuyo PID corresponde al shell que queremos abortar: kill -9 pid
8. EDITOR DE TEXTOS
Utilizaremos el editor vi. Vi es el nombre de editor de textos. Ver documentación
colgada en la asignatura.
9. BIBLIOGRAFIA
• Dr. Roberto Gómez Cárdenas .ITESM-CEM Dpto. Ciencias Computacionales. 16
de agosto de 2000.
• Manuales varios del sistema operativo UNIX
• Manuales varios del sistema operativo LINUX
• Bibliografía básica de comandos UNIX /Linux
11.
Juan de Dios Valero Serra Sistemas Operativos
juande.valero@umh.es 36
Ingeniería Técnica en Informática de Gestión Cuaderno de prácticas I: Comandos UNIX / Linux