Sie sind auf Seite 1von 162

UNIX

OPERACION, PROGRAMACION Y ADMINISTRACION

Lic. Ral N. Confalonieri

UNIX

Lic. Ral N. Confalonieri

Contenidos
Captulo 1: Introduccin ............................................................................................. 1
H Historia del Sistema UNIX ..................................................................................... 2
Nacimiento del Sistema UNIX................................................................................ 2
Evolucin del Sistema UNIX .................................................................................. 3
Difusin del Sistema UNIX..................................................................................... 3
AT&T UNIX ............................................................................................................ 4
Berkeley UNIX ....................................................................................................... 4
Intentos de Estandarizacin de UNIX .................................................................... 5
Metas de UNIX ....................................................................................................... 5
Caractersticas de UNIX ........................................................................................ 6
Captulo 2: Conceptos Fundamentales ...................................................................... 7
H
H
H
H
H
H

Usuario .................................................................................................................. 8
Archivo ................................................................................................................... 8
Proceso ................................................................................................................10
Daemon ............................................................................................................... 10
Driver ................................................................................................................... 11
Stream ................................................................................................................. 11

Captulo 3: Componentes del Sistema UNIX ........................................................... 12


H
H
H
H

Arquitectura Gerneral de un Sistema Operativo .................................................. 13


Estructura en Capas ............................................................................................ 13
Arquitectura Funcional del Sistema UNIX ............................................................ 14
Procesos ..............................................................................................................15
Estados Posibles de un Proceso .........................................................................15
Diagrama de Estados .......................................................................................... 15
H Sistema de Archivos ............................................................................................ 16
Estructura fsica ...................................................................................................16
i-nodos .................................................................................................................16
Estructura lgica .................................................................................................. 18
H Redes .................................................................................................................. 19
Conceptos bsicos .............................................................................................. 19
TCP/IP .................................................................................................................19
Aplicaciones TCP/IP ............................................................................................ 20
Sockets ................................................................................................................21
Direcciones IP ...................................................................................................... 21
H Secuencia de Arranque .......................................................................................23

Contenidos

Pgina i

UNIX

Lic. Ral N. Confalonieri

Captulo 4: Conceptos Bsicos de Shell ..................................................................25


H Definicin de shell ................................................................................................26
H Distintos tipos de shell .........................................................................................26
Bourne shell (bsh) ................................................................................................26
C-shell (csh) .........................................................................................................26
Korn shell (ksh) ....................................................................................................26
H Archivos standard ................................................................................................27
H Formato general de los comandos ......................................................................27
H Redireccionamiento (<, >) ....................................................................................27
H Redireccionamiento no destructivo: Appending (>>) ...........................................28
H Comodines (wildcards) ........................................................................................28
H Conjuntos y Rangos: [ ] y - ...................................................................................28
H Separadores de comandos (;) .............................................................................29
H Ejecucin en back-ground (&) ..............................................................................29
H Tuberas o pipes (|) ..............................................................................................29
H Ejecucion condicional de comandos (|| y &&) ......................................................30
Captulo 5: Primera Sesin ......................................................................................31
H Ingreso al sistema: login ......................................................................................32
H Salida del sistema: exit, logout y [ctrl]d ................................................................32
H Administracin de claves .....................................................................................33
Cambio de clave: passwd ....................................................................................33
H Comandos de Informacin general ......................................................................33
Presentacin en pantalla: echo ...........................................................................33
Bandera de saludo: banner .................................................................................33
Fecha del Sistema: date ......................................................................................33
Calendario: cal .....................................................................................................34
Usuarios Activos: who ..........................................................................................34
Datos del usuario actual: whoami y who am i ......................................................34
Captulo 6: Comandos Bsicos ................................................................................35
H Comandos para el manejo de directorios ............................................................36
Directorio de trabajo: pwd ....................................................................................36
Contenido de directorios: ls .................................................................................36
Cambio de directorio: cd ......................................................................................37
Creacin de un nuevo directorio: mkdir ...............................................................38
Eliminacin de un directorio: rmdir.......................................................................38
H Comandos para el manejo de archivos ...............................................................39
Vista del contenido de archivos: cat ....................................................................39
Copia de archivos y directorios: cp ......................................................................39
Renombrado y reubicacin de archivos: mv ........................................................40

Contenidos

Pgina ii

UNIX

H
H
H

Lic. Ral N. Confalonieri

Eliminacin de archivos y subdirectorios: rm .......................................................40


Vista en pantallas sucesivas: more ......................................................................41
Redireccionamiento y muestra en pantalla: tee ...................................................42
Muestra de primeras lneas de un archivo: head .................................................42
Vista de ltimas lneas de un archivo: tail ............................................................43
Creacin o cambio de fechas de un archivo: touch .............................................43
Cuenta de caracteres, palabras y lneas: wc .......................................................44
Determinacin del tipo de archivo: file .................................................................44
Bsqueda de archivos: find ..................................................................................45
Impresin de archivos: lp .....................................................................................45
Enlace (linking) de archivos : ln............................................................................46
Redefinicin de un comando: alias ......................................................................47
Comandos para la comunicacin entre usuarios .................................................47
Envo de mensajes a otros usuarios: write...........................................................47
Comunicacin en lnea entre usuarios: talk .........................................................48
Tablero de mensajes: wall ....................................................................................49
Habilitacin/inhabilitacin de recepcin de mensajes: mesg ...............................49
Dueos y permisos de archivos y directorios .......................................................50
Cambio de permisos de archivos y directorios: chmod (simblico y numrico) ...50
Comandos de manejo de procesos .....................................................................52
Estado de procesos: ps ........................................................................................52
Sealizacin de procesos: kill ..............................................................................52
Manejo temporal de procesos ..............................................................................53
Ejecucin temporizada de procesos: at ...............................................................53
Sistema de temporizacin de procesos: cron ......................................................54

Captulo 7: Comandos Avanzados ...........................................................................57


H
H
H
H
H

Familia de editores de UNIX ................................................................................58


Expresiones regulares (regexp) ...........................................................................58
Editor vi ................................................................................................................59
Comandos de ed (aplicables en vi) ......................................................................61
Comandos filtro ....................................................................................................62
Bsqueda de patrones en archivos: grep ............................................................62
Editor dinmico o de flujo: sed .............................................................................62
Filtro programable: awk .......................................................................................63
Ordenamiento de archivos: sort ...........................................................................65
Comparacin de archivos: cmp ...........................................................................66
Diferencia entre archivos: diff ..............................................................................67
Lneas comunes a dos archivos: comm ...............................................................68
Traduccin de caracteres: tr ................................................................................68
Numeracin de lneas: nl .....................................................................................69
H Manipulacin de archivos en bloques ..................................................................70
Divisin horizontal de archivos: split ....................................................................70

Contenidos

Pgina iii

UNIX

Lic. Ral N. Confalonieri

Divisin vertical de archivos: cut ..........................................................................70


Concatenacinn vertical de archivos: paste ........................................................71
Operador relacional de archivos: join ..................................................................72
H Respaldo de archivos ..........................................................................................72
Archivador: tar......................................................................................................72
Captulo 8: Programacin en Shell ..........................................................................74
H
H
H
H
H
H
H
H
H
H
H

Procedimientos shell (shell scripts) ......................................................................75


Variables en shell .................................................................................................75
Reglas Generales para Direccionamiento de Variables.......................................76
Comando expr .....................................................................................................78
Evaluacin de expresiones ..................................................................................78
Operadores: .........................................................................................................78
Estructuras de control ..........................................................................................79
Ejemplo 1 .............................................................................................................80
Ejemplo 2 .............................................................................................................80
Ejemplo 3 .............................................................................................................81
Funciones ............................................................................................................82

Captulo 9: Administracin del Sistema ...................................................................85


H Administracin por medio de utilitarios ................................................................86
H Administracin por medio de comandos ..............................................................87
H Administracin de usuarios ..................................................................................87
Agregado de usuarios: useradd ...........................................................................87
Modificacin de usuarios: usermod .....................................................................87
Eliminacin de usuarios: userdel .........................................................................88
H Administracin de grupos ....................................................................................88
Agregado de grupos: groupadd ...........................................................................88
Modificacin de grupos: groupmod ......................................................................89
Eliminacin de grupos: groupdel ..........................................................................89
H Otros comandos de administracin .....................................................................89
Cambio de titularidad de dueos de archivos: chown .........................................89
Cambio de titularidad de grupos de archivos: chgrp ............................................90
Cambio del shell por defecto: chsh ......................................................................90
Cambio de informacin de usuario: chfn .............................................................91
H Administracin de procesos .................................................................................91
Muestra del estado de los procesos: ps ..............................................................91
Sealizacin de procesos: kill ..............................................................................92
H Administracin de discos y sistemas de archivos ................................................92
Montaje de sistemas de archivos: mount.............................................................92
Desmontaje de sistemas de archivos: umount ....................................................93
Generacin de sistemas de archivos: mkfs .........................................................93
Uso de espacio en disco: du ................................................................................94
Contenidos

Pgina iv

UNIX

Lic. Ral N. Confalonieri

Espacio libre en disco: df .....................................................................................94


Verificacin de estado de sistemas de archivos: fsck ..........................................95
Resumen de la posesin de espacio en sistemas de archivos: quot ..................95
Uso y lmites de espacio en disco: quota .............................................................96
Edicin de cuotas de discospara usuarios: edquota ............................................96
Reporte del uso de cuotas y espacio en disco: repquota ....................................97
Auditora de consistencia de cuotas: quotacheck ................................................97
Captulo 10: Impresin .............................................................................................98
H
H
H
H

Modos de impresin en UNIX ..............................................................................99


Modo directo ........................................................................................................99
Modo indirecto .....................................................................................................99
Sistema BSD .....................................................................................................100
El demonio de impresin de BSD: lpd ...............................................................100
Comandos del Sistema BSD .............................................................................101
Envo de trabajos al spool: lpr ............................................................................101
Examen de la cola de impresin del spool: lpq ..................................................101
Remocin de trabajos de la cola de impresin del spool: lprm ..........................102
Control del spool: lpc .........................................................................................103
Archivo de configuracion del spool: /etc/printcap ...............................................104
H Sistema SYSV ...................................................................................................106
El demonio de impresin del spool: lpsched......................................................106
Envo de trabajos al spool: lp .............................................................................107
Cancelacin de trabajos enviados al spool: cancel ...........................................107
Permiso de encolamiento de trabajos de impresin: accept .............................108
Prohibicin de encolamiento de trabajos de impresin: reject ...........................108
Habilitacin de impresoras: enable ....................................................................109
Inhabilitacin de impresoras: disable .................................................................109
Reporte del estado del spool: lpstat...................................................................109
Configuracin del spool: lpadmin ....................................................................... 110
Cierre del demonio de impresin: lpshut ........................................................... 111
H Sistema AIX ....................................................................................................... 111
El demonio de impresin del spool: qdaemon ................................................... 112
Back-end para el spool de impresin: piobe ...................................................... 113
Programa de encolamiento de propsito general: enq ...................................... 113
Envo de trabajos de impresin al spool: qprt .................................................... 114
Cancelacin de trabajos de impresin: qcan ..................................................... 114
Comprobacin del estado de los trabajos de impresin: qchk .......................... 115
Asignacin de prioridad a un trabajo de impresin: qpri .................................... 115
Retencin y liberacin de trabajos de impresin: qheld .................................... 116
Desplazamiento de trabajos entre colas de impresin: qmov ........................... 116
Estado de las colas de impresin del spool: qstatus ......................................... 117
Archivo de configuracin del spool: /etc/qconfig ................................................ 119
H Impresin con formato para todos los sistemas: pr ...........................................121
Contenidos

Pgina v

UNIX

Lic. Ral N. Confalonieri

Captulo 11: Desarrollo de Programas ...................................................................123


H make: Actualizacin y regeneracin de grupos de archivos y programas .........124
H RCS: Sistema de Control de Revisiones ...........................................................132
Descripcin ........................................................................................................132
Caractersticas de RCS .....................................................................................132
Sumario de Comandos RCS .............................................................................133
Comandos RCS .................................................................................................133
Depsito (check-in) de archivos de trabajo: ci ...................................................133
Extraccin (check-out) de archivos de trabajo: co .............................................134
Cambio de atributos de archivos RCS: rcs ........................................................135
Muestra de informacin sobre archivos RCS: rlog ............................................136
Identificacin de archivos de trabajo: ident ........................................................137
Comparacin de archivos RCS y/o de trabajo: rcsdiff .......................................138
Intercalacin de archivos RCS y/o de trabajo: rcsmerge ...................................138
Mini-Tutorial del funcionamiento de RCS ..........................................................139
Captulo 12: Redes ................................................................................................142
H
H
H
H

Envo de requerimiento de eco: ping .................................................................143


Conexin a host remoto remoto: telnet ..............................................................144
Transferencia de archivos: ftp ............................................................................145
Mensajera electrnica: mail ..............................................................................147

Apndice A: Compilacin del kernel linux ..............................................................150


Apndice B: Tipos de sistema de archivos en linux ...............................................152
Bibliografa: ...........................................................................................................154

Contenidos

Pgina vi

UNIX

Lic. Ral N. Confalonieri

CAPITULO 1:
Introduccin

Captulo 1: Introduccin

Pgina 1

UNIX

Lic. Ral N. Confalonieri

Histria del Sistema UNIX


Nacimiento del Sistema UNIX
En 1965, la Bell Telephone Laboratories integr, conjuntamente con la General Electric
Company y el Massachusetts Institute of Technology, un equipo de trabajo con el fin de
desarrollar un nuevo sistema operativo llamado MULTICS (MULTiplexed Information
and Computing Service).
Las metas del sistema MULTICS eran:
G
G
G

Permitir que un gran nmero de usuarios tuviese acceso simultneo a un sistema


de computacin.
Proveer a esos usuarios de una importante potencia computacional y
almacenamiento masivo de datos (para la poca).
Permitir que los usuarios pudieran compartir sus datos con facilidad.

El desarrollo de MULTICS sufri una serie de retrasos en su desarrollo, en gran parte


debido a que estaba escrito en un lenguaje de alto nivel (idea revolucionaria para la
poca), el PL/I, cuyo compilador se encontraba an en etapa experimental. Cuando
finalmente estuvo lista la versin operativa del mencionado compilador, se vio que el
mismo estaba lejos de cubrir las expectativas puestas en l.
En 1969, una versin primitiva de MULTICS lleg a funcionar en una computadora GE
645. Sin embargo, qued en claro que no alcanzaba las metas para las que se haba
diseado, ni las alcanzara jams. Este hecho, conjuntamente con el anuncio de GE
de retirarse del mercado de produccin de computadoras en un futuro muy prximo,
hizo que Bell se retirase del proyecto. Esto dejo a los integrantes del mismo en libertad
de buscar nuevas posibilidades en el campo de la investigacin.
Uno de estos investigadores, Ken Thompson, decidi reescribir (esta vez en assembler),
una versin reducida de MULTICS en una minicomputadora DEC PDP-7, con el pretexto
de desarrollar un sistema de procesamiento de textos para el departamento de patentes
de Bell.
A pesar de los modestos recursos del hardware elegido como soporte, el sistema
pergeado por Thompson funcion perfectamente, lo que hizo que muchos de sus
colegas en el departamento lo secundaran en su proyecto. Uno de ellos, Brian Kernighan,
lo bautiz con el sarcstico nombre de UNICS (UNiplexed Information and Computing
Service). De alguna manera inexplicable, se cambi el nombre por el de UNIX, que es
como se lo conoce desde entonces. La ancdota segn la cual el nombre se deriva del
trmino EUNUCHS (pronunciado iunux y traducido como eunuco, debido a que se
trata de una versin castrada de MULTICS), es apcrifa.

Captulo 1: Introduccin

Pgina 2

UNIX

Lic. Ral N. Confalonieri

La Versin 1 qued concluida en ese mismo ao de 1969.


Evolucin del Sistema UNIX
El xito de UNIX hizo que se incrementara el esfuerzo en su desarrollo. En 1971,
Thompson y Ritchie lo trasladaron a un equipo DEC PDP-11, dando origen a la Versin
2.
Posteriormente, Thompson decidi reescribirlo nuevamente en un lenguaje de alto
nivel. Eligi uno de su creacin, el B (una forma simplificada del BCPL, sucesor a su
vez del CPL, el cual, como el PL/I, nunca funcion adecuadamente). El intento no fue
del todo satisfactorio, ya que el B presentaba una serie de defectos, tales como la
carencia de estructuras. Por lo tanto, Dennis Ritchie desarroll un sucesor del B, llamado
C, y escribi un excelente compilador para l.
En 1973, Thompson y Ritchie reescribieron el UNIX en C, dando orgen a la Versin 3.
Luego de diversos agregados y modificaciones, se llega en 1974 a la Versin 6, que
estaba escrita en un 95% en lenguaje C, y slo el 5% restante en assembler para la
interfaz con el hardware.
Difusin del Sistema UNIX
Thomson y Ritchie publicaron en 1974 un trabajo describiendo el sistema operativo
UNIX (por el cual recibieron el prestigioso ACM Turing Award). Esta publicacin estimul
a muchas universidades a solicitar a Bell una copia de UNIX. En aquellos tiempos,
AT&T, duea de Bell, era un monopolio regulado y tena prohibido ingresar en el negocio
de la computacin. Por lo tanto, Bell no puso objecin para otorgar licencias de UNIX
a las universidades, a un precio muy modesto.
La combinacin PDP-11 + UNIX fue durante aos el sistema preferido por los
departamentos de informtica de la mayora de las universidades. En parte porque las
PDP-11 (en sus modelos 20, 44 y 70) dominaron el mercado de las minicomputadoras
durante la dcada del 70 (fue la primera familia de minicomputadoras de costo accesible
y con una excelente documentacin de su hardware). En parte porque el UNIX se
entregaba con el cdigo fuente completo, el cual permita que profesores, estudiantes
e investigadores lo utilizaran para experimentar.
El estndar de facto fue la Versin 6, as llamada porque fue descrita en la sexta
edicin del UNIX Programmers Manual. A los pocos aos, fue reemplazado por la
Versin 7. Una generacin completa de estudiantes aprendi con estos sistemas, lo
que contribuy a su difusin al graduarse estos e ingresar en la industria.
Steve Johnson, de Bell, dise e implement un compilador portable de C, el cual

Captulo 1: Introduccin

Pgina 3

UNIX

Lic. Ral N. Confalonieri

poda redirigirse para generar cdigo objeto para casi cualquier procesador. Por aos,
casi todos los compiladores de C estuvieron basados en el compilador de Johnson, el
cual ayud enormemente a la difusin del sistema UNIX.
Para mediados de la dcada de los 80, UNIX tena una amplia difusin en el mercado
de las minicomputadoras y estaciones de trabajo de una multitud de fabricantes.
AT&T UNIX
Luego de la divisin de la AT&T en 1984 debida a las leyes antimonopolio, la compaa
se encontr en libertad de establecer una subsidiaria en el mercado informtico, lo que
hizo inmediatamente. Al poco tiempo lanz su primer producto comercial UNIX, el
System III. Este sistema no tuvo un feliz recibimiento, y fue reemplazado un ao mas
tarde por el System V (es un misterio que paso con el System IV). Desde entonces,
han hecho su aparicin las Releases 2, 3 y 4 del AT&T UNIX System V, siendo esta
ltima la que se halla en vigencia (conocida como S5V4).
Berkeley UNIX
Una de las universidades que adquiri el UNIX Versin 6 fue la Universidad de California
en Berkeley. Debido a que el cdigo fuente se encontraba disponible, Berkeley lo
modific substancialmente, produciendo una versin mejorada para la PDP-11 llamado
1BSD (First Berkeley Software Distribution), al cual sigui rpidamente la 2BSD, tambin
para la misma mquina. Las versiones 3BSD y 4BSD se implementaron en la VAX de
DEC, la sucesora de la PDP-11. Entre las mejoras proporcionadas por estas versiones,
figuraban memoria virtual, paginacin, agilizacin del sistema de archivos y utilizacin
de nombres de archivos mayores de 14 caracteres.
Asimismo, debido a los trabajos de Berkeley en conjunto con la DARPA (Defense
Advanced Research Proyects Agency) del Departamento de la Defensa Norteamericano,
naci el TCP/IP, el protocolo de redes de BSD, el que se convirti en el estndar de
facto para la comunicacin entre computadoras.
El modelo de interfaz con TCP/IP, el socket, es actualmente el modelo utilizado para
implementar la comunicacin en redes en la mayora de los sistemas operativos actuales
(incluido MS Windows).
Berkeley aadi tambin una cantidad substancial de nuevos programas utilitarios,
incluyendo un nuevo editor (vi), un nuevo shell (csh), compiladores de Pascal y Lisp,
etc.
Estas mejoras provocaron que Sun Microsystems, DEC y otros fabricantes basaran su
versin de UNIX en la implementacin de Berkeley en lugar del UNIX oficial (Versin
V).

Captulo 1: Introduccin

Pgina 4

UNIX

Lic. Ral N. Confalonieri

Intentos de Estandarizacin de UNIX


Para fines de los 80, existan dos versiones diferentes y altamente incompatibles de
UNIX: 4.3BSD y System V Release 3. Adicionalmente, cada fabricante agregaba sus
propias mejoras fuera del estndar.
Esta divisin en el mundo de UNIX fue el motivo que impidi el suceso comercial de
UNIX, ya que era imposible para los diseadores de software producir programas con
la seguridad de que pudieran ejecutarse en cualquier sistema UNIX (que fue lo que
hizo al MS-DOS tan exitoso).
El primer intento serio de reencauzar las dos grandes vertientes de UNIX se inici bajo
los auspicios del IEEE, una organizacin de enorme prestigio y, adems, neutral. Cientos
de individuos provenientes de los mbitos acadmico, industrial y gubernamental
tomaron parte en el proyecto, el que se denomin POSIX (Portable Operating System
unIX).
Desafortunadamente, sucedi una cosa curiosa con posterioridad al acuerdo de
estandarizacin. Una vez que la lucha entre BSD vs. System V se haba solucionado,
comenz una nueva. Un grupo de fabricantes liderados por IBM, DEC, Hewlett-Packard
y muchos otros, opinaba que no era conveniente que AT&T tuviera control sobre el
resto de UNIX, por lo que formaron un consorcio llamado OSF (Open Software
Foundation), para producir un sistema que cumpliera con los estndares de IEEE,
pero tambin con un importante nmero de caractersticas adicionales como un sistema
de ventanas (X11), un interfaz grfico de usuario (MOTIF), computacin distribuida
(DCE - Distributed Computing Environment), administracin distribuida (DME Distributed Management Environment) y muchas ms.
La reaccin de AT&T fue crear su propio consorcio UI (Unix International), exactamente
con los mismos fines. La versin de UNIX de UI es el System V.
El resultado final es que ahora hay dos poderosos grupos industriales cada uno de los
cuales ofrece su propia versin de UNIX. Adicionalmente, cada compaia tiene su
propia variante (IBM AIX, Hewlett Packard HP-UX, Sun Solaris, SCO UnixWare, SGI
IRIX, DEC Ultrix, etc.). Ms an, todos estos sistemas continan evolucionando en
direcciones distintas. de modo tal que los usuarios no se encuentran ms cerca de un
estndar que al comienzo.
Metas de UNIX
G
G
G
G

Portabilidad a distintas plataformas de hardware.


Sistema de archivos independiente de los dispositivos
Combinacin de programas simples para ejecutar tareas complejas.
Posibilidad de que mltiples usuarios ejecuten mltiples taras.

Captulo 1: Introduccin

Pgina 5

UNIX

Lic. Ral N. Confalonieri

Caractersticas de UNIX
G
G
G

G
G
G
G
G

Es un sistema multiusuario y multitarea. Soporta mltiples usuarios y cada usuario


puede ejecutar varios procesos simultneamente.
Est escrito en un lenguaje de alto nivel, lo que lo hace fcil de leer, entender,
modificar e implementar en distintos equipos.
Esconde la arquitectura de mquina de los ojos del usuario, facilitando la tarea de
construir programas que puedan ejecutarse en distintas implementaciones de
hardware.
Su interfaz de usuario es sencillo, pero lo suficientemente potente para dar a los
usuarios los servicios que necesitan.
Provee primitivas que permiten la construccin de programas complejos y potentes
a partir de otros mas sencillos.
Emplea un sistema jerrquico de archivos que permite su implementacin eficiente
y sencillo mantenimiento.
Utiliza un formato consistente para los archivos, el byte stream (sarta de bytes),
que facilita la construccin de programas de aplicacin.
Provee un interfaz consistente y sencillo para los dispositivos perifricos.

Captulo 1: Introduccin

Pgina 6

UNIX

Lic. Ral N. Confalonieri

CAPITULO 2:
Conceptos Bsicos

Captulo 2: Conceptos Bsicos

Pgina 7

UNIX

Lic. Ral N. Confalonieri

Conceptos Fundamentales
Usuario:
Un usuario es toda aquella entidad que est habilitada para utilizar recursos del sistema. Puede ser una persona o un programa. Para ello, debe poseer una UID (User
IDentification) y un GID (Group IDentification). Los usuarios humanos deben poseer
adems una nombre de usuario (login name) y una clave de acceso (password).
El usuario root:
En todos los sistemas UNIX existe un usuario llamado root o superusuario. Es aquel
que posee todos los privilegios de acceso al sistema. Puede acceder a todos los archivos, agregar y quitar usuarios, instalar nuevos programas, reconfigurar el sistema, etc.
Tamben puede otorgar derechos a otros usuarios para que ejecuten taras administrativas (redes, impresin, bases de datos, etc.) pero siempre conserva los mximos
privilegios del sistema.
Por definicin, su nombre de usuario es root, su UID es 0 y su GID es 0.
Algunos usuarios standard del sistema:
root
daemon
adm
guest

El usuario root o superusuario.


Usuario para los daemons.
Usuario administrador del sistema.
Usuario invitado.

Archivo:
Los archivos se utilizan para toda la entrada y salida (E/S) de informacin en el sistema
operativo. Esto estandariza el acceso tanto al software como al hardware. La entrada
se produce cuando se modifica o se graba en el contenido de un archivo. La salida se
produce cuando se lee el contenido de un archivo o se transfiere a otro archivo. Por
ejemplo, para crear una copia impresa de un archivo, el sistema lee la informacin del
archivo de texto y graba dicha informacin en el archivo que representa la impresora.
Cada archivo tiene un conjunto de permisos (llamado modo de acceso) que determinan
quin puede leer, modificar o ejecutar el archivo.
Tipos de archivos:
normal
directorio
especial

Almacena datos (texto, binario y ejecutable).


Contiene informacin utilizada para acceder a otros archivos.
Define un dispositivo fsico (de carcter o de bloque).

Captulo 2: Conceptos Bsicos

Pgina 8

UNIX

Lic. Ral N. Confalonieri

Todos los tipos de archivos reconocidos por el sistema se enmarcan en una de estas
categoras. No obstante, el sistema operativo utiliza muchas variaciones de estos tipos
bsicos.
Archivos normales:
Los archivos normales son los archivos ms usuales. Otro nombre para los archivos
normales es archivos ordinarios. Los archivos normales contienen datos.
H

Archivos de texto:

Los archivos de texto son archivos normales que contienen informacin que el usuario
puede leer. Esta informacin se almacena en ASCII. Puede visualizar e imprimir dichos
archivos.
H

Archivos binarios:

Los archivos binarios son archivos normales que contienen informacin que el sistema
puede leer. Las libreras del sistema son archivos binarios.
H

Archivos ejecutables:

Los archivos binarios pueden ser archivos ejecutables que indican al sistema que efecte
un trabajo. Los mandatos y los programas se almacenan en archivos binarios
ejecutables.
Archivos de directorio:
Los archivos de directorio contienen informacin que el sistema necesita para acceder
a todos los tipos de archivo, pero no contienen los datos reales de los archivos. En
consecuencia, los directorios ocupan menos espacio que un archivo normal y
proporcionan a la estructura de sistema de archivos flexibilidad y profundidad. Cada
entrada de directorio representa un archivo o un subdirectorio. Cada entrada contiene
el nombre del archivo y el nmero de referencia de nodo de ndice (inodo) del archivo.
El inodo designa el nodo de ndice exclusivo asignado al archivo. El inodo describe la
ubicacin de los datos asociados con el archivo.
Archivos especiales:
Los archivos especiales definen dispositivos para el sistema o archivos temporales
creados por procesos. Existen tres tipos bsicos de archivos especiales: FIFO (primero
en entrar, primero en salir), de bloque y de caracteres. Los archivos FIFO tambin
reciben en el nombre de pipes (tuberas o conductos). Los conductos se crean mediante
un proceso para permitir temporalmente las comunicaciones con otro proceso. Estos

Captulo 2: Conceptos Bsicos

Pgina 9

UNIX

Lic. Ral N. Confalonieri

archivos dejan de existir cuando termina el primer proceso. Los archivos de bloque y
los archivos de caracteres definen dispositivos o drivers.
Proceso:
Un proceso es un programa en ejecucin, o dicho en trminos ms tcnicos, es una
instancia activa de un programa.
Un proceso ocupa un espacio en la memoria principal del sistema. Este espacio de
memoria est compuesto por un bloque de bytes que el procesador interpreta como
instruccines de mquina (llamado programa o texto), datos de usuario y la pila o
stack. Este espacio de memoria es denominado contexto de un proceso.
UNIX identifica los procesos por medio de un nmero llamado PID (Process
IDentification).
Los procesos se comunican con el S.O, por medio de las llamadas de sistema (system
calls).
Procesos padres e hijos:
Cuando se invoca un programa desde la lnea de comando, el intrprete de comandos
(que es un proceso) llama al programa invocado. En terminos de UNIX, el proceso
llamante se denomina proceso padre (parent process), y el llamado, proceso hijo (child
process). Para hacer esto, el proceso padre hace uso de la llamada de sistema fork,
que genera una copia de si mismo en memoria, dando lugar a la creacin del proceso
hijo, y luego ejecuta la llamada execl que carga el programa llamado en el rea de
memoria del proceso hijo y lo ejecuta.
Nivel usuario y nivel kernel:
Un proceso se ejecuta normalmente en modo usuario. Esto significa que se encuentra
dentro de su propio contexto, esto es, que tiene acceso a sus propias instrucciones y
datos (pero no a los del kernel o de otros procesos). Cuando ejecuta una llamada de
sistema, el proceso pasa a ejecutarse en modo kernel. Bajo este modo de ejecucin,
un proceso puede acceder a las direcciones ocupadas por otros procesos. Por otra
parte, algunas instrucciones de mquina (como manipular el registro de estado del
procesador) estn disponibles en modo kernel, pero jams en modo usuario.
Daemon:
Un daemon es un proceso que se ejecuta de manera desatendida e invisible para el
usuario. Generalmente, los daemons se ejecutan al inicializar el sistema y permanecen siempre activos (slo el usuario root puede detenerlos). Habitualmente realizan
taras de planificacin, mantenimiento y como servidores de comunicaciones.
Captulo 2: Conceptos Bsicos

Pgina 10

UNIX

Lic. Ral N. Confalonieri

Algunos daemons del sistema:


crond
lpd
telnetd
ftpd
httpd

Planificador de trabajos en modo diferido (batch).


Planificador de trabajos de impresin.
Servidores de comunicaciones telnet.
Servidores de comunicaciones ftp.
Servidores de comunicaciones http (Web).

Driver:
Generalmente, los dispositivos fsicos (discos rgidos, tarjetas de red, scanners, etc.)
que pueden conectarse a una computadora requieren de una programacin muy compleja, y que requiere de grn conocimiento del hardware de los mismos. Esto sin olvidar que la programacin de dispositivos requiere de mucha habilidad en en manejo de
lenguajes como C o assembler.
Para esconder esta complejidad a ojos del usuario, UNIX posee una interfaz muy
sencilla para el manejo de dispositivos: los drivers. Un driver es un archivo que acta
como interfaz entre un programa y un dispositivo fsico. Para escribir en una terminal
de caracteres, o grabar algo en un disco, simplemente se escriben los datos deseados
en el archivo correspondiente al dispositivo.
Como se mencion en el apartado anterior, los archivos que definen drivers pueden
ser de bloques o de caracter. Los drivers de bloques estn orientados a dispositivos
que manejan los datos en bloques (discos y cintas). En cambio, los drivers de caracteres sirven para comandar dispositivos que reciben o envan datos en sartas de caracteres de longitud variable (terminales, teclados, mdems).
Stream:
Un stream es un mecanismo empleado por UNIX para transferir datos entre un programa de usuario y un driver de un dispositivo fsico. Al momento de establecerse la
comunicacin entre ambos, se crea en memoria una estructura lgica que facilita el
pasaje de datos entre programa y dispositivo. Si el dispositivo es de bloques, el stream
lo dotar de un buffer (memoria intermedia) adecuado al tamao de los bloques a
enviar. Si es de caracteres, el buffer, en caso de existir, es de pequeo tamao (generalmente una sola lnea de caracteres, o line buffer).
El mecanismo consta de un inicio y un final de stream, conectados ambos por dos
colas (queues) de datos: una de entrada y una de salida. El programa de usuario
escribe y lee los dados del inicio del stream y el dispositivo los recibe y enva desde el
final del stream.

Captulo 2: Conceptos Bsicos

Pgina 11

UNIX

Lic. Ral N. Confalonieri

CAPITULO 3:
Estructura de UNIX

Captulo 3: Estructura de Unix

Pgina 12

UNIX

Lic. Ral N. Confalonieri

Componentes del Sistema UNIX


Arquitectura General de un Sistema Operativo:
Un Sistema Operativo es el interfaz empleado por usuarios y aplicaciones para controlar
los recursos del sistema tales como el procesador (CPU), memoria, discos, impresoras,
etc.
USUARIOS Y PROGRAMAS
SISTEMA OPERATIVO

HARDWARE

Fig. 2: Arquitectura general de un S.O.

Estructura en Capas:
Conceptualmente, el sistema UNIX puede ser visto como una esructura estratificada,
donde cada capa tiene una funcin especfica.
Interfaz de Usuario
Interfaz de Biblioteca
Interfaz de
Llamadas de
Sistema

USUARIOS
UTILERIA STANDARD
(SHELL - EDITORES COMPILADORES, ETC.)

MODO
USUARIO

BIBLIOTECA STANDARD
(fork, open, read, write, close, etc.)
KERNEL
(ADM. DE PROCESOS, ADM. DE MEMORIA, SIST. DE ARCHIVOS, ETC.)

MODO
KERNE
L

HARDWARE
(CPU - MEMORIA - DISCOS -TERMINALES - ETC.)

Fig. 2: Estructura en capas de UNIX

Captulo 3: Estructura de Unix

Pgina 13

UNIX

Lic. Ral N. Confalonieri

Arquitectura Funcional del Sistema UNIX:

PROGRAMA DE USUARIO
BIBLIOTECA STANDARD

USUARIO
KERNEL
INTERFAZ DE LLAMADAS DE SISTEMA

ARCHIVOS
SEGURIDAD

PROCESOS

COMUNICACION
ENTRE
PROCESOS

SUBSISTEMA
DE
ARCHIVOS

RED

SERVICIOS
DE RED
(SOCKETS)

PLANIFICADOR
BUFFER
CACHE

CARACTER

PROTOCOLOS
TCP/IP

BLOQUE

MANEJADORES
DE
DISPOSITIVOS

ADMINISTRACION
DE
MEMORIA

MANEJADORES
DE
DISPOSITIVOS

CONTROL DE HARDWARE

KERNEL
HARDWARE
HARDWARE

Fig. 3: Arquitectura de UNIX

Captulo 3: Estructura de Unix

Pgina 14

UNIX

Lic. Ral N. Confalonieri

Procesos:
Estados Posibles de un Proceso:
1. El proceso se ejecuta en Modo Usuario
2. El proceso se ejecuta en Modo Kernel
3. El proceso no se se encuentra en ejecucin pero est listo para correr tan pronto
como el kernel lo planifique.
4. El proceso est inactivo (durmiente) y reside en la memoria principal.
5. El proceso est listo para correr, pero el swapper debe transferirlo a la memoria
principal para que el kernel lo planifique (previo a 3).
6. El proceso est inactivo (durmiente) y el swapper lo ha pasado al
almacenamiento secundario para dar lugar a otros procesos en la memoria principal.
7. El proceso est volviendo del modo kernel al modo usuario.
8. El proceso est recientemente creado y se encuentra en modo de transicin.
Existe, pero no esta listo para correr y no se encuentra durmiendo (este es el
modo inicial de todos los procesos).
9. El proceso ejecut la llamada de sistema exit y est en estado zombie. Este es el
estado final de un proceso. No existe ms, pero deja un registro conteniendo un
cdigo de salida y estadsticas de tiempo para el proceso padre.
Diagrama de Estados de un Proceso:
fork()

RETORNO
A USUARIO

1
MODO
USUARIO

LLAMADA DE
SISTEMA;
INTERRUPCION

PREEMPTED

CREADO

SWAP IN

2
MODO
KERNEL

MEMORIA
INSUFICIENTE;
SWAPPED

MEMORIA
SUFICIENTE

RETORNO
A USUARIO

PROCESO DE
PLANIFICACION;
RESCHEDULE

LISTO PARA
CORRER;
EN MEMORIA

SWAP OUT

5
LISTO PARA
CORRER;
SWAPPED

INTERRUPCION;
RETORNO
WAKEUP

WAKEUP

EXIT
SLEEP

9
ZOMBIE

4
DORMIDO;
EN
MEMORIA

SWAP
OUT

6
DORMIDO;
EN
DISCO

Fig. 4: Diagrama de estados de un proceso.

Captulo 3: Estructura de Unix

Pgina 15

UNIX

Lic. Ral N. Confalonieri

Sistema de Archivos:
Estructura fsica:
Un sistema de archivos (file system) tiene la siguiente estructura:

Un boot block que ocupa el primer sector del sistema de archivos, y que puede
contener el cdigo de booteo que lee la mquina para la inicializacin del sistema
operativo.

Un super block que describe el estado del sistema de archivos


TAMAO DEL SISTEMA DE ARCHIVOS
NMERO DE BLOQUE LIBRES
LISTA DE BLOQUES LIBRES
INDICE DEL PROXIMO BLOQUE LIBRE
TAMA DE LA LISTA DE INODOS
NUMERO DE INODOS LIBRES
LISTA DE INODOS LIBRES
INDICE DEL PROXIMO INODO LIBRE
CAMPO DE BLOQUEO PARA LA LISTA DE BLOQUES E INODOS LIBRES
BANDERA DE MODIFICACION DEL SUPER BLOCK

Fig. 5: Estructura del super block.

Una inode list (lista de inodos), ubicada al final del super block, que contiene una
lista de los inodos del sistema (ver Fig. 6).

Los data blocks (bloques de datos), que contienen datos de usuario y de sistema.

Inodos:
Un inodo es la representacin interna de un archivo. Contiene la informacin necesaria
para que un proceso pueda acceder a un archivo (ver Fig. 6). En la Fig. 7 se da un
ejemplo de un inodo hipottico.

Captulo 3: Estructura de Unix

Pgina 16

NUMERO DE INODO

LISTA DE INODOS

Captulo 3: Estructura de Unix

BLOQUES DE DATOS

TAMAO DE ARCHIVO

ENLACES

ULTIMO CAMBIO
(ARCHIVO)
ULTIMO ACCESO
(ARCHIVO)
ULTIMO CAMBIO
(INODO)

MODO DE ACCESO

TIPO DE ARCHIVO

GRUPO

DUEO

INODO

SUPER BLOCK

BOOT BLOCK

BLOQUE DATOS
BLOQUE DATOS
BLOQUE DATOS
BLOQUE DATOS
BLOQUE DATOS
BLOQUE DATOS
BLOQUE DATOS
BLOQUE DATOS
BLOQUE DATOS

DIRECTO 1
DIRECTO 2
DIRECTO 3
DIRECTO 4
DIRECTO 5
DIRECTO 6
DIRECTO 7
DIRECTO 8
DIRECTO 9

INDIRECTO 3

INDIRECTO 2

INDIRECTO 1

BLOQUE DATOS

DIRECTO 0

BLOQUE DATOS
BLOQUE DATOS

BLOQUE DATOS
BLOQUE DATOS

BLOQUE DATOS
BLOQUE DATOS

UNIX
Lic. Ral N. Confalonieri

Fig. 6: Estructura de un sistema de archivos.

Pgina 17

UNIX

Lic. Ral N. Confalonieri

NUMERO DE INODO

1798

DUEO

jperez

GRUPO

admin

TIPO DE ARCHIVO

regular

MODO DE ACCESO

rwxr-xr-x

ULTIMO CAMBIO (ARCHIVO)

Apr 27 2000 1:50 P.M.

ULTIMO ACCESO (ARCHIVO)

Apr 27 2000 1:50 P.M.

ULTIMO CAMBIO (INODO)

Apr 27 2000 1:50 P.M.

ENLACES

TAMAO DE ARCHIVO

6030 bytes

BLOQUES DE DATOS

--------

Fig. 7: Ejemplo de un inodo (hipottico).

Estructura Lgica:
La estructura lgica de los sistemas de archivos en UNIX, es del tipo jerarquico o de
rbol invertido (la raz va al tope). La informacin se almacena en divisiones llamadas
directorios (archivos que contienen informacin de otros archivos). El directorio principal se denomina / y de el penden todos los dems. Un directorio puede contener
archivos y otros directorios (llamados a veces subdirectorios). Una estructura tpica de
UNIX es la siguiente:
\

bin

dev

etc

home

lib

cat

stdin

fstab

cp

stdout

group

cap1

libcrypt.so

date

stderr

hosts

cap2

libcurse.so

echo

tty0

motd

find

fd0

passwd

more

hda

profile

...

...

...

jperez

libc.so

root

...
...
...

sbin
fdisk

bin

fsck
mkfs

libdb.so

mount

libutil.so

shutdown

calc1.c

libvga.so

umount

deriv.c

...

...

jperez

usr

doc
include
man
share

...

Fig. 8: Ejemplo de un sistema de archivos.

Captulo 3: Estructura de Unix

Pgina 18

UNIX

Lic. Ral N. Confalonieri

Formato interno de un directorio:


OFFSET DE
BYTE EN
DIRECTORIO
0
16
32
48
64
80
96
112
128
144
160
176
192
208
224
240
256

NUMERO DE
INODO
(2 BYTES)
83
2
1798
1276
85
1268
1799
88
2114
1717
1851
92
84
1432
0
95
188

NOMBRES
DE
ARCHIVOS
.
..
init
fsck
clri
motd
mount
mknod
passwd
umount
checklist
fsdb1b
config
getty
crash
mkfs
inittab

Fig. 9: Formato interno de un directorio.

Redes:
Conceptos bsicos:
Topologa: Disposicin geomtrica de los componentes de una red.
Protocolo: Conjunto de normas que rigen la comunicacin de datos entre los
componentes de una red, teniendo en cuenta la jerarqua de los mismos.
TCP/IP:
TCP/IP (Transmision Control Protocol / Internet Protocol), es el conjunto de protocolos
de comunicaciones standard de UNIX. Define los mtodos de direccionamiento entre
sistemas (hosts) a travs de distintos tipos de redes (LAN, WAN, etc.) y las formas en
que se enruta la informacin a travs de las mismas. Bsicamente se trata de un
modelo estratificado similar al modelo OSI.
APLICACION
TRANSPORTE (TCP/UDP)
RED (IP)
ENLACE DE DATOS
FSICA

Fig. 10: Pila de protocolos TCP/IP.

Captulo 3: Estructura de Unix

Pgina 19

UNIX

Lic. Ral N. Confalonieri

Capa Fsica:
Capa de Enlace:

Se encarga de la transmisin de bits a travs del medio fsico.


Ejecuta el entramdo y desentramado de los paquetes
procedentes de la capa superior y controla errores de
transmisin.
Capa de Red:
Ejecuta el enrutamiento de la informacin a travs de la red.
Capa de Transporte: Controla la transmisin entre usuarios finales (hosts). Puede
ser con control de arribo (TCP) o sn control de arribo (UDP).
Capa de Aplicacin: Brinda servicios a las aplicaciones que los soliciten, utilizando
los servicios de las capas inferiores.
Aplicaciones TCP/IP:
Las aplicaciones de TCP/IP dan soporte a los ms variados servicios, desde una simple
conexin remota hasta la videoconferencia.

NFS
FTP
DNS

SMTP

XDR

TELNET

RPC

TCP

UDP
IP
CAPA DE ENLACE DE DATOS (OSI)
CAPA FSICA (OSI)

Fig. 11: Aplicaciones TCP/IP.

DNS: Domain Name Service (Servicio de Servidor de Dominios). Es un servicio que


traduce direcciones de red a nombres de dominio legibles por seres humanos (p.ej. de
192.164.69.36 a http://www.raul.com).
SMTP: Simple Mail Transfer Protocol (Protocolo Simple de Transferencia de Correo).
Es un protocolo que define el enrutamiento de la correspondencia electrnica entre los
hosts de una red.
Telnet: Es un protocolo simple de comunicaciones remotas con un host.
FTP: File Transfer Protocol (Protocolo de Transferencia de Archivos). Es un servicio
de transferencia de archivos entre hosts. Si la conexin al host es remota, se apoya en
el protocolo Telnet. Si no, emplea TCP/IP en forma directa.
NFS: Network File Service (Servicio de Archivos de Red). Es un servicio por medio del
cual se puede ver el sistema de archivos de un host remoto.

Captulo 3: Estructura de Unix

Pgina 20

UNIX

Lic. Ral N. Confalonieri

XDR: External Data Representation (Representacin Externa de Datos). Si el host


remoto utiliza distinta representacin de la informacin que el host local, NFS hace uso
de este protocolo para que la informacin sea legible por el mismo.
RPC: Remote Procedure Call (Llamada a Procedimiento Remoto). Es un servicio por
medio del cual se puede ejecutar un proceso en un host remoto.
Sockets:
Los sockets son un interfaz entre las aplicaciones y los protocolos TCP/IP. Un socket
se crea cuando una aplicacin cliente efecta un requerimiento de servicio a una
aplicacin servidora, empleando los servicios TCP/IP.
HOST A
PROCESO CLIENTE

HOST B
CAPA DE
APLICACION

PROCESO SERVIDOR

INTERFAZ
SOCKETS
TCP/UDP

INTERFAZ
SOCKETS
Peticin de
servicio del
cliente

TCP/UDP

Respuesta
del servidor

IP

IP

CAPA DE ENLACE
DE DATOS (OSI)

CAPA DE ENLACE
DE DATOS (OSI)

CAPA FSICA
(OSI)

CAPA FSICA
(OSI)

MEDIO FISICO DE TRANSMISION DE DATOS

Fig. 12: Interfaz de sockets.

Direcciones IP:
Una direccin IP consta de 4 bytes (32 bits), dispuestas de la siguiente forma:
direccin de 32 bits = 4 bytes
01110011

10100101

10010111

01110111

Fig. 13: Direcciones IP.

Para hacer ms legible la direccin, por convencin se escribe cada byte en su forma
decimal, separado del siguiente por puntos. As, la direccin de la figura 13 ser

Captulo 3: Estructura de Unix

Pgina 21

UNIX

Lic. Ral N. Confalonieri

115.165.151.119
Una direccin IP consta de dos partes: direccin de red y direccin de host:
direccionamiento en 2 partes
DIRECCION DE RED

DIRECCION DE HOST

Fig. 14: Direcciones de red y de host.

Las direcciones IP se clasifican en 3 grupos, de acuerdo a los bytes de direccion


empleados por las secciones red y host:
Direccion de
red = 8 bits

Direccin de host = 24 bits


Clase A
126 redes
16.777.214 hosts

Direccion de red = 16 bits

Direccin de host = 16 bits


Clase B
16.384 redes
65534 hosts

10

Direccion de red = 24 bits

Direccin de
host = 8 bits
Clase C
2.097.152 redes
253 hosts

110

Fig. 14: Clases de direcciones IP.

Las redes clase A llevan un prefijo 0 en su primer bit y tienen su primer byte con un
valor entre 1 y 126. Los valores 0 y 127 estn reservados.
Las redes clase B llevan un prefijo 10 en su primeros dos bits y tienen su primer byte
con un valor entre 128 y 191.
Las redes clase C llevan un prefijo 110 en su primeros tres bits y tienen su primer byte
con un valor entre 192 y 223.
Gracias al primer nmero de una red, se puede determinar fcilmente su tipo:
Clase A

1.xxx.xxx.xxx a 126.xxx.xxx.xxx

Clase B

127.xxx.xxx.xxx a 191.xxx.xxx.xxx

Clase C

192.xxx.xxx.xxx a 223.xxx.xxx.xxx

Captulo 3: Estructura de Unix

Pgina 22

UNIX

Lic. Ral N. Confalonieri

Direcciones especiales:
Existen direcciones IP que tienen un significado especial:
Loopback

127.0.0.1

0000000000000000

DIRECCION DE HOST

"Esta red"

DIRECCION DE RED

1111111111111111

"Todos los
hosts"

1111111111111111

0000000000000000

Mascara de red

Fig. 15: Direcciones IP especiales.

La direccin denominada loopback sirve para establecer una comunicacin circular


con el host que origin la comunicacin. De esta manera, los procesos que deban
comunicarse a traves de TCP/IP dentro del mismo host utilizan esta direccin para
evitar enviar paquetes a la red.
La direccin esta red indica que estamos indica la red en la cual se encuentra el host
que solicita comunicacin.
La direccin todos los hosts indica que se desea difundir un mensaje (broadcast) a
todos los hosts de la red direccionada.
La mascara de red posee todos los bits de la direccin de red en 1 y los bits de la
direccin de host en 0 (para cualquier tipo de direccin: A, B o C). Por su intermedio se
puede calcular la direccin de la red a partir de la direccin del host (haciendo una
operacin AND bit a bit a lo largo de los 32 bits de la direccin completa). Por ejemplo,
si un host tiene la direccin 206.197.168.200 y su mscara de red es 255.255.255.0,
entonces su direccin de red es 206.197.168.0 (verificar en formato binario).
Secuencia de arranque de UNIX:
Desde el momento en que se enciende el equipo hasta que el usuario puede acceder
a los servicios de UNIX, el sistema ejecuta una secuencia de procedimientos que se
pueden esquematizar de la siguiente manera:

Captulo 3: Estructura de Unix

Pgina 23

UNIX

Lic. Ral N. Confalonieri

boot

Archivos de
Configuracin

init

Archivos de
Configuracin

getty

espera
conexion

login

sh:exit

login:exit

login name
password

verificacin
de acceso

ksh

Archivos de
Configuracin

sesion de
trabajo
Fig. 16: Secuencia de arranque de UNIX.

Captulo 3: Estructura de Unix

Pgina 24

UNIX

Lic. Ral N. Confalonieri

CAPITULO 4:

Conceptos Bsicos de Shell

Captulo 4:Conceptos Bsicos de Shell

Pgina 25

UNIX

Lic. Ral N. Confalonieri

Definicin de Shell:
El shell gestiona la interaccin del usuario con los recursos del sistema, tales como
programas, archivos y dispositivos.

USUARIO
SHELL
RECURSOS DEL SISTEMA

Figura 1: Shell

Esta gestin se lleva a cabo mediante la habilitacin del usuario a ingresar comandos,
la traduccin de los mismos en trminos entendibles por el sistema y la devolucin al
usuario de los resultados obtenidos. Por este motivo se dice que el shell es un intrprete
de comandos.
Asimismo, el usuario puede agrupar comandos en archivos llamados scripts (guiones),
para su ejecucin automatizada. Debido a que el shell dispone de estructuras lgicas
de alto nivel (variables, bifurcaciones, lazos, etc.) se dice que el shell es un lenguage
de programacin.
Distintos Tipos de Shell:
Bourne Shell (sh bsh)
Es el shell original de UNIX. Se lo denomina as por su creador, Steve Bourne. Sus
caractersticas son las descritas anteriormente.
C-Shell (csh)
Desarrollado con posterioridad en Berkeley, el c-shell lleva su nombre debido a que
utiliza una sintaxis similar al lenguaje de programacin C.
Korn Shell shell POSIX (ksh)
Creado por Steve Korn, este shell es el ms moderno y combina las mejores
caractersticas de los anteriormente descritos, adems de agregar algunas nuevas
tales como evaluacin aritmtica, histrico de comandos y edicin de la lnea de
comandos. Es el shell por defecto en los sistemas UNIX que adhieren al standard
POSIX.

Captulo 4:Conceptos Bsicos de Shell

Pgina 26

UNIX

Lic. Ral N. Confalonieri

Archivos Standard:
Para dar una mayor flexibilidad al sistema, los comandos de UNIX tienen definido por
defecto las entradas y salidas de los mismos. Estas son llamadas entradas y salidas
standard o archivos standard.

ENTRADA
STANDARD

PROCESO

SALIDA
STANDARD

ERROR
STANDARD

Figura 2: Entrada y Salida Standard

Por regla general, la entrada standard es el teclado de la consola del usuario y la salida
y el error standard son la pantalla de la consola del usuario.
En caso necesario, estas entradas y salidas pueden modificarse, proceso que se conoce
como redireccionamiento de entrada/salida.
Formato General de los Comandos:
El formato general de cualquier comando en UNIX es:
$comando [opcion, ...] [argumento, ...]
Redireccionamiento:
Para cambiar el la entrada, salida o error standard de un comando se utilizan los
caracteres < (para entrada) y > para salida o error.
La lnea de comando:
$comando1 <archivo1 >archivo2 2>archivo3
nos indica que el comando comando1 toma como archivo de entrada a archivo1,
como archivo de salida a archivo2 y como archivo de error a archivo3.

Captulo 4:Conceptos Bsicos de Shell

Pgina 27

UNIX

Lic. Ral N. Confalonieri

Redireccionamiento no destructivo (appending):


Si se desea redireccionar la salida de un comando y agregarla al contenido de un
archivo ya existente, se debe utilizar el caracter >>.
La lnea de comando:
$comando1 >> archivo1
redireccionar la salida de comando1 y la colocar al final del contenido de archivo1.
Comodines (wildcards):
El carcter * significa literalmente cualquier cadena conteniendo 0 o ms caracteres
cualesquiera.
La lnea de comando:
$comando1 capitulo*
significa que el comando1 ser aplicado a todos aquellos archivos cuyos nombres
comiencen con la palabra capitulo, tales como:
capitulo1, capitulo2, capitulo_medio, capitulo_final
El carcter ?significa un caracter (y slo uno ) cualquiera.
La lnea de comando:
$comando1 capitulo?
significa que el comando1 ser aplicado a todos aquellos archivos cuyos nombres
comiencen con la palabra capitulo, y que a continuacin posean un carcter cualquiera,
tales como:
capitulo1, capitulo2, capituloA
Conjuntos y Rangos:
Para denotar un conjunto de caracteres se emplean los corchetes []. Los
componentes del conjunto se escriben uno a continuacin del otro dentro de los
corchetes.

Captulo 4:Conceptos Bsicos de Shell

Pgina 28

UNIX

Lic. Ral N. Confalonieri

La lnea de comando:
$comando1 capitulo[1234]
ejecutar el comando1 para los archivos cuyo nombre comience con la palabra captulo
y finalice con uno de los nmeros 1, 2, 3 y 4:
capitulo1 capitulo2 capitulo3 capitulo4
Si el conjunto de caracteres es un rango se escriben los valores inicial y final del mismo
separados por un guin -
La lnea de comando:
$comando1 capitulo[1-9]
ejecutar el comando1 para los archivos para los archivos cuyo nombre comience con
la palabra captulo y finalice con un nmeros del 1 al 9:
capitulo1 capitulo2 capitulo3 capitulo4 capitulo5 capitulo6
capitulo7 capitulo8 capitulo9
Separadores de comandos:
Se pueden ingresar varios comandos en la misma lnea. Para ello, deben estar
separados por el signo ;
La lnea de comando:
$comando1; comando2
ejecutar en primer lugar el comando1 y a continuacin el comando2
Ejecucin en background:
Si se agrega el caracter & al final de un comando, este se ejecutar en modo background, devolviendo inmediatamente al usuario el smbolo de sistema.
$comando1&
Tuberas (pipes):
El shell proporciona al usuario una forma cmoda de encadenar la salida de un comando
con la entrada de otro, mediante las llamadas tuberas o pipes. Para hacer un pipe

Captulo 4:Conceptos Bsicos de Shell

Pgina 29

UNIX

Lic. Ral N. Confalonieri

entre dos comandos, se utiliza el carcter |.


La lnea de comando:
$comando1 | comando2
har que la salida del comando 1 sea pasada a la entrada del comando 2, quien
mostrar su salida en la salida standard.
Ejecucin condicional de comandos:
Operador &&
En la lnea de comando:
$comando1 && comando2
el comando2 ser ejecutado si y solo si la ejecucin del comando1 es exitosa.
Operador ||
En la lnea de comando:
$comando1 || comando2
el comando2 ser ejecutado si y solo si la ejecucin del comando1 es fallida.

Captulo 4:Conceptos Bsicos de Shell

Pgina 30

UNIX

Lic. Ral N. Confalonieri

CAPITULO 5:
Primera Sesin

Captulo 5: Primera Sesin

Pgina 31

UNIX

Lic. Ral N. Confalonieri

Primera Sesin
Ingreso al Sistema:
Para poder ingresar al sistema, el usuario debe poseer una cuenta en el mismo. Si no
la posee, debe solicitar al Administrador del Sistema que le asigne una.
Una cuenta est compuesta por dos componentes:

Un nombre de usuario (login name o UID - User IDentification)


Una clave de acceso (password).

Al encender la terminal (real o virtual), el sistema le solicita que ingrese el nombre de


usuario:
login: jperez<ENTER>
Seguidamente, el sistema solicita el ingreso de la clave de acceso. Por motivos de
seguridad, esta clave no se exhibe en pantalla y el cursor no cambia de posicin.
password: <ENTER>
Si se ingres una clave incorrecta, el sistema mostrar el siguiente mensaje:
login incorrect
login:
Si la clave fue correctamente ingresada, el sistema le da acceso mostrndole el smbolo
de sistema o prompt. Si el usuario es root, el prompt por defecto es #, mientras que
para el resto de los usuarios es $.
Salida del Sistema:
Para salir del sistema (concluir la sesin), el usuario puede usar cualquiera de tres
posibilidades: logout, exit <CTRL-D>. En cualquiera de los casos, se cierra la
sesin en curso y el sistema vuelve a solicitar el ingreso de un nombre de usuario. En
este momento se puede apagar la terminal o iniciar una nueva sesin.
#logout
login:

Captulo 5: Primera Sesin

Pgina 32

UNIX

Lic. Ral N. Confalonieri

Administracin de Claves
Cambio de la clave de usuario:
Si el usuario desea cambiar su clave, deber utilizar el comando passwd:
$passwd
Changing password for jperez
Old password: <ENTER>
New password: <ENTER>
Retype new password: <ENTER>
$
Comandos de Informacin General
echo: Presentacin en pantalla
Para imprimir en la salida standard, se emplea el comando echo
$echo Bienvenidos a UNIX<ENTER>
Bienvenidos a UNIX
$
banner: Bandera de saludo
El comando banner imprime una bandera (banner) de saludo en la salida standard:
$banner hola
#
#
#
#
######
#
#
#
#
#
#
$

####
#
#
#
#

#
#
#
#
####

#
#
#
#
#
######

##
#

#
#
######
#
#
#
#

date: Fecha del sistema


Para ver la fecha se emplea el comando date:
$date
Fri Jun
$

11:03:25

Captulo 5: Primera Sesin

EDT

2000

Pgina 33

UNIX

Lic. Ral N. Confalonieri

cal: Calendario
El comando cal (sin argumentos) imprime el calendario del mes en curso:
$cal
Su Mo
4 5
11 12
18 19
25 26

June 2000
Tu We Th Fr
1 2
6 7 8 9
13 14 15 16
20 21 22 23
27 28 29 30

Sa
3
10
17
24

Si se lo invoca con el argumento ms y ao, imprime el calendario correspondiente:


$cal 2 2001
February 2001
Su Mo Tu We Th Fr
1 2
4 5 6 7 8 9
11 12 13 14 15 16
18 19 20 21 22 23
25 26 27 28

Sa
3
10
17
24

who: Usuarios activos


Para ver que usuarios estn logeados en el sistema, ingresamos el comando who:
$who
root
pjuarez
amarquez
$

tty0
tty2
tty5

Jun 16 10:00
Jun 16 11:15
Jun 16 12:32

whoami: Datos del usuario actual


Los comandos whoami y who am i, identifican al usuario en curso, dando distinta
informacin del mismo:
$whoami
jperez
$who am i
jperez
$

ttyp1

Captulo 5: Primera Sesin

Jun 16 15:32

Pgina 34

UNIX

Lic. Ral N. Confalonieri

CAPITULO 6:
Comandos Bsicos

Captulo 6: Comandos Bsicos

Pgina 35

UNIX

Lic. Ral N. Confalonieri

Comandos Bsicos
Comandos para el manejo de directorios
pwd: Directorio de trabajo
Formado del Comando:
pwd
Descripcin:
El comando pwd muestra en la salida standard el directorio de trabajo actual (el directorio
en el que se encuentra trabajando el usuario en el momento de ejecutar el comando).
Ejemplo:
$pwd
/home/jperez
$
ls: Contenido de directorios
Formado del Comando:
ls [opciones] [directorio]
Descripcin:
El comando ls lista en la salida standard el contenido de un directorio especificado. Si
no se le suministra nombre de directorio alguno, lista el directorio de trabajo actual.
Opciones:
-a
-A
-d
-i
-l

Lista todos los archivos, incluso los ocultos (aquellos cuyos nombres
comienzan con un punto)
Idem opcin anterior, con la diferencia que no lista los directorios .
(actual) y .. (padre)
Lista slo los directorios (no los archivos contenidos en ellos).
Agrega el nmero de inodo de cada archivo al listado (en la primera
columna del mismo)
Lista larga (tipo de archivo, modo, nmero de links, dueo, grupo,
tamao en bytes, tiempo de la ltima modificacin y nombre del
archivo). Si el archivo es un enlace simblico, el nomre del archivo es

Captulo 6: Comandos Bsicos

Pgina 36

UNIX
-m
-n
-p
-r -R
-1

Lic. Ral N. Confalonieri

listado seguido de la cadena -> y el nombre del archivo referenciado.


Formato por defecto. Lista solamente los nombres ordenados de arriba
hacia abajo y de izquierda a derecha.
Idem opcin -l, con la diferencia que se imprimen el UID y el GID en
lugar de los nombres asociados a ellos.
Pone una barra / luego del nombre si el archivo es un directorio.
Lista recursivamente los contenidos de los directorios encontrados.
Lista los nombres de los archivos en una sola columna.

Ejemplo:
$ls -l
total 456
drwxr-xr-x
drwxr-xr-x
drwxr-xr-x
-rw-rr
-rw-rr
-rw-rr
...

1
1
1
1
2
2

jperez
jperez
jperez
jperez
jperez
jperez

jperez
jperez
jperez
jperez
jperez
jperez

4096
4096
4096
64
93
80

Jun
Jul
May
Mar
May
May

30
4
24
3
11
12

07:08
08:19
18:19
20:47
01:41
00:49

ejemplos
filtros
mail
prog1.c
prog2.c
prog3.c

cd: Cambio de directorio


Formado del Comando:
cd [directorio]
Descripcin:
El comando cd cambia el directorio de trabajo actual al especificado. Si no se especific
ningun directorio, el comando hace un cambio al directorio especificado en la variable
de ambiente HOME.
Ejemplo:
$pwd
/home/finanzas/cuentas
$cd /home/administracion/empleados
$pwd
/home/administracion/empleados
$

Captulo 6: Comandos Bsicos

Pgina 37

UNIX

Lic. Ral N. Confalonieri

mkdir: Creacin de un nuevo directorio


Formado del Comando:
mkdir [opciones] directorio ...
Descripcin:
El comando mkdir crea los directorios especificados en la lnea de comando.
Opciones:
-m [modo]

Establece los permisos de acceso para el directorio creado y sus


contenidos. El modo se establece con la misma sintaxis que el comando
chmod.

Ejemplo:
$pwd
/home/jperez
$mkdir /home/jperez/apuntes
$
rmdir: Eliminacin de directorios
Descripcin:
El comando rmdir elimina los directorios especificados (deben estar vacos; caso
contrario, enva un aviso por el error standard).
Formado del Comando:
rmdir [opciones] directorio ...
Opciones:
-i [modo]

Solicita confirmacin (en la salida standard) para cada uno de los


directorios a eliminar.

Ejemplo:
$rmdir /finanzas/cuentas
$

Captulo 6: Comandos Bsicos

Pgina 38

UNIX

Lic. Ral N. Confalonieri

Comandos para el manejo de archivos


cat: Vista de contenidos de archivos
Formado del Comando:
cat [opciones] archivo ...
Descripcin:
El comando cat muestra en la salida standard el contenido de lo archivo especificado.
Si se trata de mltiples archivos, los concatena en la salida standard, cada uno a
continuacin del anterior.
Opciones:
-b

-n
-r

Muestra las lneas del archivo precedidas por el nmero de lnea


corespondiente, exceptuando las lneas en blanco. Si se especifica
esta opcin, se especifida automticamente la opcin -n
Muestra las lneas del archivo precedidas por el nmero de lnea
corespondiente.
Reemplaza un conjunto de lneas en blanco consecutivas,
mostrndolas como una sola lnea.

Ejemplo:
$cat capitulo1 capitulo2 capitulo3 > libro
$
cp: Copia de archivos y directorios
Formado del Comando:
cp [opciones] fuente destino
Descripcin:
El comando cp ejecuta la copia de archivos y directorios (en forma recursiva). El
argumento fuente puede ser un archivo, un conjunto de ellos o un directorio. El
argumento destino puede ser un archivo o un directorio. Las copias pueden ser archivo
a archivo, archivos a directorio y directorio a directorio.

Captulo 6: Comandos Bsicos

Pgina 39

UNIX

Lic. Ral N. Confalonieri

Opciones:
-f
-i
-r

Ejecuta una copia forzada sobre un archivo existente (soobreescritura).


Solicita confirmacin (en la salida standard) para ejecutar una copia
sobre un archivo existente (soobreescritura).
Copia los archivos y subdirectorios (en forma recursiva) del directorio
origen) al directorio destino.

Ejemplo:
$cp presentismo.lst /home/administracion/empleados
$
mv: Renombrado y reubicacin de archivos
Formado del Comando:
mv [opciones] origen destino
Descripcin:
El comando mv renombra archivos o los reubica. Si los archivos origen y destino se
encuentran en el mismo directorio, ejecuta un cambio de nombre. Si se encuentran en
directorios diferentes, ejecuta una reubicacin.
Opciones:
-f
-i

Ejecuta una reubicacin o un cambio de nombre forzado sobre un


archivo existente (soobreescritura).
Solicita confirmacin (en la salida standard) para ejecutar una
reubicacin o un cambio de nombre sobre un archivo existente
(soobreescritura).

Ejemplo:
$mv presentismo.lst pres.lst
$mv pres.lst /home/administracion/empleados
$
rm: Eliminacin de archivos y subdirectorios
Formado del Comando:
rm [opciones] destino

Captulo 6: Comandos Bsicos

Pgina 40

UNIX

Lic. Ral N. Confalonieri

Descripcin:
El comando rm elimina componentes del sistema de archivos. El argumento destino
puede ser un archivo o un conjunto de ellos (incluyendo subdirectorios y sus contenidos,
en forma recursiva).
Opciones:
-f
-i
-r o -R

Ejecuta un borrado forzado sobre un archivo o archivos existentes.


Solicita confirmacin (en la salida standard) para ejecutar la eliminacin
de un archivo o archivos existentes.
Elimina subdirectorios y sus contenidos en forma recursiva.

Ejemplo:
$rm capitulo*
$
more: Vista en pantallas sucesivas
Formado del Comando:
more [opciones] archivo
Descripcin:
El comando more permite visualizar el contenido de un archivo de a una pgina (del
tamao de una pantalla) por vez. Para avanzar un rengln se debe digitar <ENTER>,
y para avanzar una pgina se debe digitar <SPACE>. Este comando solo permite
mostrar los contenidos en avance (no se puede retroceder para visualizar una pantalla
ya vista). Para salir del comando se debe digirar la letra q.
Opciones:
-n nmero

Establece el nmero de lneas de la pgina a visualizar en pantalla.

Ejemplo:
$more libro
...

$cat libro | more


...

Captulo 6: Comandos Bsicos

Pgina 41

UNIX

Lic. Ral N. Confalonieri

tee: Redireccionamiento y muestra en pantalla


Formado del Comando:
tee [opciones] [archivo...]
Descripcin:
El comando tee se utiliza como una ampliacin de un pipe (tubera). Transcribe la
entrada standard a la salida standard y realiza una copia del archivo o archivos
especificados.
Opciones:
-a

Genera una extensin (appending) de los archivos (en caso de existir


previamente) en lugar de sobreescribirlos.

Ejemplo:
$ls -l | tee directorio
$
head: Muestra de la primeras lneas de un archivo
Formado del Comando:
head [opciones] archivo...
Descripcin:
El comando head muestra en la salida standard las prineras lneas del archivo o archivos
especificados. Por defecto muestra 10 lneas.
Formado del Comando:
head [opciones] archivo...
Opciones:
-n nmero

Establece el nmero de lneas a mostrar.

Ejemplo:
$head -5 libro
...

Captulo 6: Comandos Bsicos

Pgina 42

UNIX

Lic. Ral N. Confalonieri

tail: Muestra de ltimas lneas de un archivo


Formado del Comando:
tail [opciones] archivo...
Descripcin:
El comando tail muestra en la salida standard las ltimas lneas del archivo o archivos
especificados. Por defecto muestra 10 lneas.
Opciones:
-n nmero

Establece el nmero de lneas a mostrar.

Ejemplo:
$tail -5 libro
...
touch: Creacin o cambio de fechas de un archivo
Formado del Comando:
touch [opciones] archivo...
Descripcin:
El comando touch actualiza las fechas de modificacin y/o ltimo acceso de cada
archivo pasado como argumento. Si el archivo no existe, se crea con longitud 0. Si no
se especifican las fechas, se emplea la fecha y hora actual.
Opciones:
Modifica la fecha de acceso al archivo. Si no se especifica una fecha,
se emplea la actual.
-m
Modifica la fecha de modificacin del archivo. Si no se especifica una
fecha, se emplea la actual.
-c
Impide la creacin del archivo si este no existe previamente.
-r arch_ref Toma la fecha de arch_ref en lugar de la actual
-t tiempo
Especifica la fecha a modificar. El formato de tiempo es
[[CC]YYMMDDhhmm[.ss]
-a

Nota: las opciones -r y -t son mutuamente excluyentes

Captulo 6: Comandos Bsicos

Pgina 43

UNIX

Lic. Ral N. Confalonieri

Ejemplo:
$touch -t 199907141045 cuentas.lst
$
wc: Cuenta de caracteres, palabras y lneas
Formado del Comando:
wc [opciones] archivo...
Descripcin:
El comando wc cuenta caracteres (o bytes), palabras y lneas del archivo o archivos
especificados y muestra el resultado por la salida standard. Si no se especifica opcin
alguna, muestra un reporte total.
Opciones:
-c
-m
-w
-l

Muestra el nmero de bytes


Muestra el nmero de caracteres
Muestra el nmero de palabras
Muestra el nmero de lneas

Ejemplo:
$wc -l capitulo1
50 capitulo1
$
file: Determinacin del tipo de archivo
Formado del Comando:
file [opciones] archivo...
Descripcin:
El comando file realiza una serie de pruebas sobre el o los archivos pasados como
argumentos con el fin de determinar su tipo y muestra el resultado en la salida standard.
Emplea el archivo /etc/magic para identificar archivos que posean una constante
numrica o una cadena de caracteres que idiquen su tipo.

Captulo 6: Comandos Bsicos

Pgina 44

UNIX

Lic. Ral N. Confalonieri

Opciones:
-m archivo
-f archivo

Establece un archivo de identificacin alternativo.


Establece un archivo que contiene los nombres de los archivos a
clasificar, en lugar de leerlos de la lnea de comando.

Ejemplo:
$file saludo
$
find: Bsqueda de archivos
Formado del Comando:
find directorio... [expresin]
Descripcin:
El comando find recorre el o los directorios pasados como argumento, buscando archivos
que concuerden con la expresin suministrada.
Expresin:
-name archivo
-follow
-fsonly tipoFS
-local

Busca los archivos cuyo nombre concuerde con el dado.


Ejecuta la bsqueda siguiendo los enlaces dinmicos.
Slo busca en el tipo de sistema de archivos especificado.
Busca en el sistema de archivos local.

Ejemplo:
$find / -name resumen
...
lp: Impresin de archivos
Descripcin:
El comando lp enva archivos al sistema de colas de impresin (print queue).
Formado del Comando:
lp [opciones] achivo...

Captulo 6: Comandos Bsicos

Pgina 45

UNIX

Lic. Ral N. Confalonieri

Opciones:
Copia el o los los archivos a imprimir en el directorio del sistema de
spooling. Normalmente son enlazados (linked).
-ddestino
Selecciona destino como la impresora elegida para ejecutar el trabajo
de impresin.
-m
Enva un mail al usuario para avisarle que su requerimiento de inpresin
fue cumplido.
-nnumero
Especifica el nmero de copias del trabajo a imprimir. El valor por
defecto es 1.
-pprioridad Establece la prioridad del trabajo de impresin. El valor ms bajo es 0
y el ms alto es 7. Si no se especifica, el valor por defecto es el
establecido por el administrador del sistema.
-s
Suprime los mensajes enviados por el comando lp a la salida standard.
-tttulo
Imprime un banner con el ttulo del trabajo de impresin en la primera
pgina del mismo.
-w
Enva un mensaje a la salida standard del usuario para avisarle que
su requerimiento de inpresin fue cumplido. Si el usuario no est
logeado, le enva un mail.

-c

Ejemplo:
$lp -dlp2 -m resumen
$
ln: Enlace (linking) de archivos
Formado del Comando:
(1) ln [opciones] archivo1 archivo2
(2) ln [opciones] archivo1 [archivo2...] directorio_destino
(3) ln [opciones] directorio1 [directorio2...] directorio_destino
Descripcin:
El comando ln crea un enlace (link) entre los archivos o directorios pasados como
argumento.
La forma (1) crea un enlace entre archivo1 (existente) y archivo2 (existente o creado
por el comando ln) en el mismo directorio.
La forma (2) crea enlaces entre archivo1 (archivo2, etc) y archivo/s (nuevos o creados
por ln) del mismo nombre en el directorio_destino.
La forma (3) crea enlaces entre directorio1 (directorio2, etc) y directorio/s (nuevos o
creados por ln) del mismo nombre en el directorio_destino.

Captulo 6: Comandos Bsicos

Pgina 46

UNIX

Lic. Ral N. Confalonieri

Opciones:
-f
-i

-s

Remueve (elimina) de manera forzada los nombres de destino para


permitir el enlace.
Solicita confirmacin (en la salida standard) para ejecutar un enlace
sobre un archivo existente (soobreescritura). Esta opcin slo tiene
efecto si se usa en conjunto con la opcin -f
El enlace creado es simblico (no comparten el mismo inodo), lo que
le permite estar en otro sistema de archivos.

Ejemplo:
$ln usuarios users
$
alias: Redefinicin de un comando
Formado del Comando:
alias [comando=shell script]
Descripcin:
El comando alias se emplea para redefinir comandos. Si no se le suministran parmetros,
lista los alias definidos en el sistema. Si se le suministran parmetros, crea el comando
redefinido y exporta su definicin.
Ejemplo:
$alias ll=ls -l
$
Comandos para la comunicacin entre usuarios
write: Envo de mensajes a otros usuarios
Formado del Comando:
write receptor [terminal]
Descripcin:
El comando write sirve para enviar un mensaje a la terminal de otro usuario. Copia lo
que el emisor escribe en su terminal, en la terminal del receptor. Finaliza cuando el

Captulo 6: Comandos Bsicos

Pgina 47

UNIX

Lic. Ral N. Confalonieri

emisor tipea <CTRL-D>. Cuando se lo llama por primera vez, escribe el mensaje:
Message from emisor on terminal at fecha ...
y a continuacin las lneas escritas por el emisor.
Para controlar la recepcin de mensajes, el usuario debe utilizar el comando mesg
(descrito al final de esta seccin).
talk: Comunicacin en lnea entre usuarios
Formado del Comando:
talk receptor [terminal]
Descripcin:
El comando talk es una aplicacin de comunicaciones bidireccional, orientada al interfaz
teclado/pantalla. El argumento receptor puede tomar las formas:
recetor
receptor@host
host:receptor
host.receptor
donde receptor es un nombre de login y host es un nombre de host.
Cuando se lo llama por primera vez, escribe en la pantalla del receptor el siguiente
mensaje:
Message from Talk_Daemon@host_emisor
...
talk: connection requested by emisor@host_emisor
talk: respond with: talk emisor@host_emisor
En este punto, el receptor debe responder:
talk emisor@host_emisor
y lla comunicacin queda establecida. Una vez logrado esto, cada uno de los
interlocutores puede tipear sus mensajes simultaneamente, apareciendo los mensajes
enviados y recibidos en distintas regiones de la pantalla.
Cuando cualquiera de los interlocutores desea terminar la sesin, debe digitar <CTRL-

Captulo 6: Comandos Bsicos

Pgina 48

UNIX

Lic. Ral N. Confalonieri

D> o <CTRL-C> para terminar la ejecucin del comando talk desde su extremo. El otro
extremo ser notificado que la sesin fue concluida y no le queda mas remedio que
terminar la propia.
Para controlar la recepcin de mensajes, el usuario debe utilizar el comando mesg
(descrito al final de esta seccin).
wall: Tablero de mensajes
Formado del Comando:
wall [-g grupo] [archivo]
Descripcin:
El comando wall permite que un usuario enve un mensaje a la salida standard de
todos los usuarios logeados en el sistema.
El comando lee el mensaje de la entrada standard, salvo que se utilice la opcin archivo,
en cuyo caso el comando lee el mensaje del archivo pasado como parmetro.
Si se hace uso de la opcin -g, el emisor tiene la posibilidad de restringir el mensaje a
los usuarios logeados pertenecientes a un grupo determinado.
Para controlar la recepcin de mensajes, el usuario debe utilizar el comando mesg
(descrito al final de esta seccin).
El nico usuario que puede escribir en todas las terminales sin importar el estado de
mesg es root.
Ejemplo:
$wall
En 10 minutos se bajar el sistema para mantenimiento.
Favor de deslogearse. Gracias.
<CTRL-D>
$
mesg: Habilitacin/inhabilitacin de recepcin de mensajes
Formato del Comando:
mesg [opciones]

Captulo 6: Comandos Bsicos

Pgina 49

UNIX

Lic. Ral N. Confalonieri

Descripcin:
El comando mesg habilita o inhabilita la recepcin de mensajes de los comandos write
y talk. Si se lo ejecuta sin opciones, informa del estado de recepcin de mensajes.
Opciones:
n
y

Inhabilita la recepcin de mensajes va write o talk


Habilita la recepcin de mensajes va write o talk

Dueos y permisos de archivos y directorios


chmod: Cambio de permisos de archivos y directorios
Formado del Comando:
chmod [opciones] archivo...
Descripcin:
El comando chmod cambia los permisos de acceso de un archivo o directorio para su
lectura, escritura y/o ejecucin.
Opciones:
a. Modo simblico
Las opciones llevan la forma:
[quien]operacin[permiso]...
quien
a
u
g
o

Todos los usuarios (all)


El dueo del archivo - quien lo cre (owner)
El grupo al que pertenece el dueo del archivo (group)
El resto de los usuarios (other)

operacin
+
=

Agrega el permiso que se indica a continuacin


Suprime el permiso que se indica a continuacin
Modifica el permiso que se indica a continuacin

Captulo 6: Comandos Bsicos

Pgina 50

UNIX
permiso
r
w
x
s
t

Lic. Ral N. Confalonieri

Permiso de lectura
Permiso de escritura
Permiso de ejecucin (bsqueda si es un directorio).
Establece el UID (User ID) GID (Group ID) durante la ejecucin.
Restringe la eliminacin de archivos a los propietarios del directorio,
de los archivos o a root (a este permiso se lo llama sticky bit).

b. Modo numrico
Las opciones llevan la forma:
[n0]n1n2n3
donde:
n0 es una cifra opcional que corresponde a la suma de los valores numricos de los
permisos extra de un archivo o directorio marcado como ejecutable.
n1 es una cifra que corresponde a la suma de los valores numricos de los permisos
del dueo.
n2 es una cifra que corresponde a la suma de los valres numricos de los permisos
del grupo.
n3 es una cifra que corresponde a la suma de los valres numricos de los permisos
del resto.
Valores numricos de los permisos n1 a n3
Permiso
Lectura
Escritura
Ejecucin

Habilitado
4
2
1

Inhabilitado
0
0
0

Valores numricos del permiso n0


Permiso
Set UID
Set GID
Sticky bit

Habilitado
4
2
1

Inhabilitado
0
0
0

Ejemplo:
$chmod ug=rwx,o=r listado
$chmod 774 listado

Captulo 6: Comandos Bsicos

Pgina 51

UNIX

Lic. Ral N. Confalonieri

Comandos de manejo de procesos


ps: Estado de los procesos
Formado del Comando:
ps [opciones]
Descripcin:
El comando ps muestra en la salida standard el estado de los procesos en curso.
Opciones:
-e -A
-p lista
-t lista
-u lista

Todos los procesos.


Muestra los procesos cuyos PID se enumeran en lista.
Muestra los procesos cuyos terminales asociados se enumeran en
lista.
Muestra los procesos nombres de usuario o UID se enumeran en lista

Ejemplo:
$ps -t tty0
...
kill: Sealizacin de procesos
Formado del Comando:
kill [seal] proceso
Descripcin:
El comando kill enva una seal a un proceso identificado por su PID.
Seales:
-0
-9
-25
-26

Chequea el acceso al PID


Termina el proceso de manera forzada
Detiene (pausa) el proceso
Contina el proceso detenido

Ejemplo:
$kill -9 12536
Captulo 6: Comandos Bsicos

Pgina 52

UNIX

Lic. Ral N. Confalonieri

Manejo temporal de procesos


at: Ejecucin temporizada de procesos
Formado del Comando:
a. Ingreso de comandos desde la lnea de comandos
at [-m] [-q cola] -t tiempo_numerico
comando...
<CRTL-D>
at [-m] [-q cola] tiempo [fecha] [next unidad | +count unidad]
comando...
<CRTL-D>
b. Ingreso de comandos desde un archivo de comandos
at -f archivo [-m] [-q cola] -t tiempoAB
at -f archivo [-m] [-q cola] tiempo [fecha] [next ut | +cuenta
ut]
Descripcin:
El comando at permite la ejecucin temporizada de procesos, esto es, que permite
determinar el momento deseado en que se desea ejecutar un proceso .
Para controlar el uso del comando at, existen dos archivos de configuracin
denominados /etc/at.allow y /etc/at.deny. El primero contiene los nombres
de las personas explcitamente autorizadas a emplear el comando; toda aquella persona
cuyo login name no figure en at.allow, no podr emplearlo. El segundo contiene los
nombres de las personas a quienes se niega explcitamente el uso del comando. toda
aquella persona cuyo login name no figure el at.deny, podr emplearlo. Generalmente
no existen en forma simultnea, es decir, que si existe at.allow no existe at.deny y
viceversa. En caso de no existir ninguno de los dos, slo el usuario root puede emplear
at.
Opciones:
-m
-q cola
-f archivo
-t tiempoAB

Enva un mail al usuario indicndole que el proceso fue ejecutado.


Envia el trabajo a una cola (queue) especificada.
Lee los comandos a ejecutar desde archivo.
Define el tiempo absoluto de comienzo de ejecucin. El formato es

Captulo 6: Comandos Bsicos

Pgina 53

UNIX
tiempo
fecha
+cuenta

next

Lic. Ral N. Confalonieri

[[CC]YY]MMDDhhmm[.ss]
Tiempo base para la ejecucin del comando.
Fecha base para la ejecucin del comando.
Cuenta es un nmero decimal que indica el incremento de ut (unidad
de tiempo) que se ledebe sumar al tiempo base para obtener el tiempo
deseado de ejecucin.
Equivale a +1 ut (unidad de tiempo).

Tiempos:
tiempo
fecha

ut

Pueden ser los nombres midnight, noon, now o un tiempo definido por
el formato hh:mm [am | pm].
Pueden ser los nombres today, tomorrow, o un tiempo definido por el
formato dia de la semana (nombre completo o abreviado) o el formato
dia (numrico), mes(nombre completo, abreviado o numrico) y
opcionalmente el ao (numrico). Los separadores pueden ser coma
(,), punto (.), barra (/) y guin (-).
Puede ser minute(s), hour(s), day(s), week(s), month(s) o year(s).

Ejemplo:
$at -f trabajo now + 5 minutes
$at -f trabajo 5am tuesday + 2 weeks
$at -f trabajo 17:15 next month
cron: Sistema de temporizacin de procesos
Descripcin:
cron es un sistema de ejecucin temporizada de comandos. Por su intermedio, se
puede planificar la ejecucin peridica de procesos.
Su esquema de funcionamiento es sencillo: el programa cron es un daemon que se
lanza automticamente al iniciar el sistema y que verifica constantemente la existencia
de trabajos para ejecutar en tablas llamadas genricamente crontab ubicadas en el
directorio /var/spool/cron/crontabs (las tablas llevan el nombre del usuario que
las envi). Los usuarios pueden generar sus tablas crontab mediante la ejecucin del
comando crontab.
Para poder emplear el comando crontab, el usuario debe tener su nombre incluido en
el archivo /var/adm/cron/cron.allow. Si no existiese el mencionado archivo,
cualquie usuario puede emplear el comando crontab siempre y cuando su nombre no
se encuentre incluido en el archivo /var/adm/cron/cron.deny. De no existir ninguno
de ambos archivos, el uso de crontab es irrestricto para todos los usuarios.

Captulo 6: Comandos Bsicos

Pgina 54

UNIX

Lic. Ral N. Confalonieri

Formado del Comando:


(1) crontab
(2) crontab
(3) crontab
(4) crontab

archivo
-e [usuario]
-l [usuario]
-r [usuario]

(1) Crea o reemplaza el archivo crontab del usuario, copiando el archivo pasado como
parmetro al directorio donde residen las tablas crontab. El nombre de la tabla ser
el mismo que el nombre del usuario invocante.
(2) Edita una copia de una tabla existente o crea una nueva si no existiese previamente.
Finalizada la sesin de edicin, el archivo editado se guardar en el directorio
donde residen las tablas crontab.
(3) Lista el contenido de una tabla crontab.
(4) Elimina la tabla crontab del usuario invocante del directorio donde residen las tablas
crontab.
Los usuarios solo pueden manipular sus propias tablas crontab. Para hacer uso de la
opcin usuario, se deben poseer privilegios especiales (ej. root).
El formato de una tabla crontab consta de 5 campos numricos enteros y un campo de
caracteres. Su descripcin es la siguiente:
1. minute
2. hour
3. monthday
4. month
5. weekday
6. command

Minuto de la hora, 0-59


Hora del da, 0-23
Dia del ms, 1-31
Mes del ao, 1-12
Dia de la semana, 0-6 (0=Domnigo)
El comando a ejecutar

Cada uno de los primeros 5 campos puede contener:


a. un asterisco (*), que significa todos los valores permitidos
b. un valor permitido
c. un conjunto de valores permitidos separados por comas
d. un rango de valores permitidos expresados por un valor inicial y un valor final separado
s por un guin

Captulo 6: Comandos Bsicos

Pgina 55

UNIX

Lic. Ral N. Confalonieri

Ejemplo:
#minute
hour
monthday month
weekday
command
############################################################
0
0
1,15
*
1
comando1
0
0
*
*
1
comando2
El comando1 se ejecutar a la medianoche de los das 1 y 15 de cada mes, como as
tambin los dias lunes de cada semana
El cmando2 se ejecutar a la medianoche solamente los lunes.

Captulo 6: Comandos Bsicos

Pgina 56

UNIX

Lic. Ral N. Confalonieri

CAPITULO 7:
Comandos Avanzados

Captulo 7: Comandos Avanzados

Pgina 57

UNIX

Lic. Ral N. Confalonieri

Familia de Editores de Unix:


UNIX posee bsicamente dos editores standard: ed (editor de lnea) y vi (editor de
pantalla). De ellos se deriva una familia de editores que tiene usos especiales.
ed

ex

red

edit

vi

view

vedit

vipw

vigr

Fig. 1: Familia de editores de UNIX

red:
ex:
edit:
view:
vedit:
vipw:
vigr:

Versin restringida de ed para principiantes. Slo edita archivos en el directorio


del usuario. No puede ejecutar comandos de shell dentro de su entorno.
Editor de lnea ms poderoso que ed y desarrollado a partir de este. Es el
motor de edicin subyacente en vi.
Versin de ex para principiantes. Su uso es ms sencillo.
Versin de vi que abre los archivo en modo de slo lectura.
Versin de vi para principiantes. Su uso es ms sencillo.
Versin de vi para editar el archivo /etc/passwd (lo bloquea para evitar
intrusiones). Slo puede ser usado por root.
Versin de vi para editar el archivo /etc/group (lo bloquea para evitar intrusiones).
Slo puede ser usado por root.

Expresiones Regulares
Las expresiones regulares se emplean en la concordancia de patrones (pattern matching) en las bsquedas textuales. Son utilizadas con profusin en UNIX, tanto en los
editores como en los comandos de filtrado. A continuacin se muestra una tabla
conteniendo las ms sencillas:
c
\c
^
$
.
c*
c+
c?
c1c2
c1|c2

cualquier carcter regular c.


carcter especial.
inicio de lnea.
final de lnea.
cualquier carcter individual (equivale al ? del shell).
0 o ms ocurrencias del caracter c.
1 o ms ocurrencias del caracter c.
0 o 1 ocurrencias del caracter c.
caracter c1 sequido de c2.
caracter c1 o caracter c2.

Captulo 7: Comandos Avanzados

Pgina 58

UNIX
[...]
[^...]
(
)

Lic. Ral N. Confalonieri

rango de caracteres.
rango negado de caracteres.
agrupa caracteres.

Editor VI
El editor vi tiene dos modos de funcionamiento: modo comando (se abre por defecto
en este modo) y modo texto. La forma de conmutar entre uno u otro modo es la siguiente:
a,A,i,I,o,O,R
modo
comando

modo
texto

<ESC>

A. Comandos de Manejo de Archivos


Editar un archivo.
Editar un archivo, descartando los cambios.
Abandonar el editor.
Abandonar el editor, descartando los cambios.
Grabar archivo en curso.
Grabar archivo.
Sobreescribir (pisar) archivo.
Ejecutar comando de ed/ex (ver seccin siguiente).

:e<archivo>[CR]
:e!<archivo>[CR]
:q[CR]
:q![CR]
:w[CR]
:w<archivo>[CR]
:w!<archivo>[CR]
:<cmd>[CR]

B. Comandos de Posicionamiento
1. Caracter

Avanza al siguiente caracter.


Retrocede al caracter anterior.

2. Palabra
w
b
e

Avanza al comienzo de la palabra siguiente.


Retrocede al comienzo de la palabra anterior.
Avanza al final de la palabra.

3. Lnea

Sube a la lnea superior.


Baja a la lnea inferior.
Sube a la primera lnea de la pantalla.

Captulo 7: Comandos Avanzados

Pgina 59

UNIX
M
L
0
$

Lic. Ral N. Confalonieri

Avanza a la lnea central de la pantalla.


Baja a la ultima lnea de la pantalla.
Retrocede al inicio de la lnea.
Avanza al fn de la lnea.

4. Pantalla
[CTRL]F
[CTRL]B
[CTRL]D
[CTRL]U
[CTRL]E
[CTRL]Y
[CTRL]G

Avanza una pantalla completa.


Retrocede una pantalla completa.
Enrolla media pantalla abajo.
Enrolla media pantalla arriba.
Enrolla un rengln abajo.
Enrolla un rengln arriba.
Avanza al final del archivo.

C. Comandos de Edicin
1. Borrado
[n]dl [n]x
[n]dw
[n]dd
d$ D

Borra carcter bajo el cursor.


Borra palabra.
Borra lnea.
Borra desde el cursor hasta el final de la lnea.

2. Reemplazo
r

Reemplaza caracter bajo el cursor.

3. Insercin
a
A
i
I
o
O
R

Agrega caracteres luego del cursor.


Agrega caraceres al final de la lnea.
Inserta en el lugar del cursor.
Inserta al principio de la lnea.
Abre una lnea en blanco abajo del cursor.
Abre una lnea en blanco arriba del cursor.
Inicia el modo reemplazo (sobreescritura).

4. Manejo de Buffers
[n]yy [n]Y
[n]yl
p
xy
xp

Copia lnea en un buffer standard.


Copia caracter en un buffer standard.
Pega texto desde un buffer standard.
Copia a un buffer x.
Pega desde un buffer x.

Captulo 7: Comandos Avanzados

Pgina 60

UNIX

Lic. Ral N. Confalonieri

5. Reparacin de Errores
Deshace el ltimo cambio.
Restaura la lnea actual.

u
U

Comandos de ed (aplicables en VI):


Formato del comando
[lnea inicial][,linea final]comando[calificador]
Nota 1:
Se emplea el caracter 1 para denotar la primera lnea del archivo, el caracter
$ para denotar la ltima y el caracter % para indicar todo el archivo.
Nota 2:
Se emplea el calificador g para ejecutar el comando sobre todas las ocurrencias
en una lnea.
1. Bsqueda
busca la siguiente ocurrencia de un patron.
busca la siguiente ocurrencia del mismo patron.
busca ocurrencia anterior de un patron.
busca la ocurrencia anterior del mismo patron.

/patron/
//
?patron?
??

Ejemplos con bsqueda de patrones:


/^$/
/./
/^/
/patron/
/^patron/
/patron$/
/[pP]atron/

busca la prxima lnea vaca.


busca la prxima lnea no vaca.
busca la prxima lnea (vaca o no).
busca la prxima ocurrencia de patron.
busca la prxima ocurrencia de patron al comienzo de la lnea.
busca la prxima ocurrencia de patron al final de la lnea.
busca la prxima ocurrencia de patron Patron.

2. Sustitucin
s/texto viejo/texto nuevo/
3. Aadido, insercin, eliminacin
na
ni
n,c
m,nd

Aade texto luego de la lnea n.


Inserta texto antes de la lnea n.
Cambia la lnea n.
Elimina lneas de la m a la n.

Captulo 7: Comandos Avanzados

Pgina 61

UNIX

Lic. Ral N. Confalonieri

4. Union de lneas
m,nj

une las lneas m y n.

Comandos Filtro
grep: Bsqueda de patrones en archivos
Formato del comando:
grep [opciones] patrn archivo...
grep [opciones] -f archivo_patron archivo...
Descripcin:
El comando grep busca la ocurrencias de un patron de texto en el archivo o archivos
pasados como argumento. Cuando encuentra una lnea que contiene el patrn buscado
la muestra en la salida standard. La opcin -f permite leer el patrn buscado de un
archivo.
Opciones:
-v
-i
-n
-c

invierte los resultados de la bsqueda (imprime las lneas que no


coinciden).
no distingue maysculas de minsculas.
numera las lneas.
no imprime la lneas coincidentes (slo las cuenta).

Ejemplo:
$grep -i unix capitulo1
...
sed: Editor dinmico o de flujo
Formato del comando:
sed lista de comandos ed archivo...
sed -f archivo_comandos archivo...
Descripcin:
El comando sed lee un archivo o archivos pasados como argumentos, ejecuta una
lista de comandos de ed a los mismos y muestra el resultado en la salida standard. Los
comandos deben ser comandos vlidos de ed. Si el comando no posee direcciones de
Captulo 7: Comandos Avanzados

Pgina 62

UNIX

Lic. Ral N. Confalonieri

lnea se aplica a todas las lneas de un archivo.


Ejemplo:
$sed s/[Uu]nix/UNIX/ capitulo1
...
awk: Filtro programable
Formato del Comando:
awk programa awk archivo...
awk -f archivo_comandos archivo...
Descripcin:
El comando awk es un intrprete de lenguaje orientado a la bsqueda y procesamiento
de patrones de texto. Est especialmente preparado para procesar archivos con formato
de lneas de longitud fija, con separadores de campo entre columnas.
El lenguaje de awk es una mezcla de c (sin declaraciones de variables) y shell, que lo
hace muy sencillo de programar y de una grn potencia.
Un programa awk tiene cuatro secciones bien diferenciadas:
BEGIN{bloque inicial}: es un conjunto de sentencias que se ejecutar con antelacin
al procesamiento del archivo. Aqui se pueden inicializar variables (propias de awk y
definidas por el usuario), imprimir encabezados, etc. Si este bloque no se encuentra
presente, no se ejecuta accin alguna y las variables predefinidas de awk toman sus
valores por defecto.
bsqueda: es el patrn de bsqueda que indica sobre qu lneas del archivo de entrada
se ejecutar el bloque principal del programa. Si no est presente, el bloque principal
se ejecutar sobre todas las lneas del archivo.
{bloque principal}: es el ncleo del programa, que se ejecuta para cada una de los
lneas que coincidan con el patrn de bsqueda, o para todas si este no se encuentra
presente. Si se omite el bloque principal, se imprimen todas las lneas del archivo de
entrada que concuerden con el patrn de bsqueda.
END{bloque final}: es un conjunto de sentencias que se ejecutar con posterioridad
al procesamiento del archivo. Aqui se pueden inicializar variables (propias de awk y
definidas por el usuario), imprimir totales, etc. Si este bloque no se encuentra presente,
no se ejecuta accin alguna.

Captulo 7: Comandos Avanzados

Pgina 63

UNIX

Lic. Ral N. Confalonieri

Sntesis del lenguaje awk:


expresiones: variables, asignaciones, llamadas a funciones, etc.
{ sentencias }
print lista de expresiones
printf lista de expresiones
if (expresion) sentencia [else sentencia]
while (expresion) sentencia
do sentencia while (expresion)
for (expresion; expresion; expresion) sentencia
for (variable in arreglo) sentencia
break
continue
next
exit [(expresion)]
Variables predefinidas de awk:
Variable
ARGC
ARGV
FILENAME
FNR
FS
NF
NR
OFMT
OFS
ORS
RS

Significado
Nmero de argumentos de la lnea de comandos
Arreglo de argumentos de la lnea de comandos
Nombre del archivo de entrada actual
Nmero de registro en el archivo de entrada actual
Separador de campo de entrada
Nmero de campos en el registro actual
Nmero de registros ledos hasta el momento
Formato de salida para nmeros
Separador de campo de salida
Separador de registro de salida
Separador de registro de entrada

Valor Inic.

%.6g

\n
\n

Funciones Integradas:
Matemticas: sin(), cos(), exp(), int(), log(), sqrt(), etc
De cadena: split(), substr(), match(), index(), length(), etc
Campos:
En awk, los campos son cadenas de caracteres (distintas de blancos), separados por
un espacio en blanco (un blanco o un tabulador). Los campos de cada lnea leda se
denominan $1, $2, etc. La lnea completa se denomina $0. Para operar con ellos es
necesario referenciarlos con ese nombre.

Captulo 7: Comandos Avanzados

Pgina 64

UNIX

Lic. Ral N. Confalonieri

Ejemplo:
awk -f busca direcciones
El archivo direcciones est compuesto de la siguiente manera:
nombre:direccin:barrio:ciudad:telefono
El archivo busca contiene el siguiente programa awk:
BEGIN{
FS=:; OFS=; tot=0; print Direcciones de Crdoba
}$4 == Cordoba{
print Nombre: , $1, ** Direccin: , $2; tot=tot+1
}END{
OFS= ; print Se imprimieron:, tot, lneas del archivo
}
La salida ser de la forma:
Direcciones de Crdoba
Nombre: Juan Perez ** Direccin: 27 de Abril 9009
.................................................
.................................................
Se imprimieron: 999 lneas del archivo
sort: Ordenamiento de archivos
Formato del Comando:
sort [opcin...] archivo...
Descripcin:
El comando sort ordena las lneas del archivo o archivos especificados como argumentos
y las muestra en la salida standard.
Opciones:
-o salida
-k clave
-u
-d
-f

Indica un archivo de salida distinto de la salida standard.


Indica la clave de ordenamiento. Ver formato de claves.
Suprime lineas duplicadas.
Ordena en forma de diccionario (slo letras, dgitos y blancos).
Ignora si se trata de maysculas o minsculas.

Captulo 7: Comandos Avanzados

Pgina 65

UNIX
-n
-r
-tx

Lic. Ral N. Confalonieri

Ordena campos numricos.


Invierte el rden de clasificacin.
Indica a x como separador de campo.

Campos en la lnea de entrada:


Por defecto, sort considera un campo como una mnima secuencia de caracteres
seguido por un blanco. Si hay mltiples blancos, los que siguen al primero se consideran
parte del campo siguiente.
Formato de claves:
Las claves de definen de la siguiente forma:
inicio_clave, fin_clave
donde inicio_clave y fin_clave llevan la forma m,n donde m es el nmero del campo
por el que se desea clasificar y n el nmero de caracter dentro del campo. Por defecto,
sort cuenta los campos y los caracteres a partir del nmero 1.
Ejemplo:
$sort -t: -r -o persinv -k 1.1, 1.30 personal
...
La lnea de comando del ejemplo clasifica en rden inverso el archivo denominado
personal, cuyos campos estn separados por :, tomando como clave los primeros
30 caracteres del primer campo y dando como salida el archivo persinv.
Comparacin de Archivos
cmp: comparacin de archivos
Formato del Comando:
cmp [opcion...] archivo1 archivo2
Descripcin:
El comando cmp compara dos archivos. Si son iguales no muestra ninguna salida (por
defecto).

Captulo 7: Comandos Avanzados

Pgina 66

UNIX

Lic. Ral N. Confalonieri

Opciones:
-l
-s

Muestra el nmero de byte (en decimal) donde tiene lugar la


diferencia y el caracter donde existe diferencia (en octal).
No muestra salida alguna para archivos diferentes. Solo devuelve
cdigos de retorno (0=archivos identicos; 1=archivos diferentes).

Ejemplo:
$cmp archi1 archi2
...
diff: Diferencia entre archivos
Formato del Comando:
diff [opciones] archivo1 archivo2
Descripcin:
El comando diff muestra en la salida standard las modificaciones que se deben realizar
sobre el archivo1 para hacerlo idntico a archivo2.
La salida es de la forma:
n1 a n3,n4
n1,n2 d n3
n1,n2 c n3,n4
Los nmeros a continuacin de las letras pertenecen al archivo2. Los comandos a, d
y c significan agregar (append), borrar (delete) y cambiar (change) respectivamente.
Siguiendo a cada una de estas lneas vienen las lineas afectadas del archivo1 precedidas
de un signo <, y luego las lineas afectadas del archivo2 precedidas del signo >.
Opciones:
-e
-f

Genera un script de ed para transformar archivo1 en archivo2.


Genera un script similar al anterior, no utilizable por ed pero ms
legible por seres humanos.

Ejemplo:
$diff -e arch1 arch2 > script; echo w >> script
$ed x1 < script
Captulo 7: Comandos Avanzados

Pgina 67

UNIX

Lic. Ral N. Confalonieri

comm: Lneas comunes a dos archivos


Formato del Comando:
comm [opciones] archivo1 archivo2
Descripcin:
El comando comm lee dos archivos (que deben estar previamente ordenados - ver
sort) y muestra por defecto una salida de tres columnas: 1) Lneas que slo se
encuentran presentes en archivo1, 2) Lneas que slo se encuentran presentes en
archivo2 y 3) Lneas comunes a ambos archivos.
Opciones:
-1
-2
-3

Suprime la salida de la columna 1.


Suprime la salida de la columna 2.
Suprime la salida de la columna 3.

Ejemplo:
$comm -12 lista1 lista2
...
tr: Traduccin de caracteres
Formato del Comando:
tr [opciones] [conjunto1 [conjunto2]]
Descripcin:
El comanto tr copia la entrada standard en la salida standard con sustitucin o
eliminacin de caracteres seleccionados. Los caracteres del conjunto1 son apareados
con los del conjunto2 sustituyendo el caracter n del conjunto1 por el caracter n del
conjunto2. Pueden emplearse rangos para abreviar.
Opciones:
-d
-s

Borra las todas las ocurrencias del conjunto1 especificado.


Comprime repeticiones de caracteres del conjunto1 especificado.

Captulo 7: Comandos Avanzados

Pgina 68

UNIX

Lic. Ral N. Confalonieri

Ejemplo:
$tr [a-z] [A-Z] < apunte > apunte_mayusculas
$
nl: Numeracin de lneas de archivos
Formato del Comando:
nl [opciones] archivo
Descripcin:
El comando nl lee lineas del archivo especificado y las muestra en la salida stardard
numeradas a la izquierda, de acuerdo a las opciones especificadas.
nl ve el texto en trminos de pginas lgicas. La numeracin es reseteada al comienzo
de cada pgina lgica. Una pgina consiste en un encabezamiento (header), un cuerpo
(body) y un pi (footer). Se aceptan secciones vacias. Pueden elegirse diferentes
opciones de numeracin para cada seccin.
El comienzo de las secciones se sealan con los siguientes delimitadores y deben
estar en lineas independientes:
\:\:\:
\:\:
\:

Comienza el header
Comienza el body
Comienza el footer

Si no hay ningn delimitador en el texto, nl asume que el texto es una pgina lgica
simple.
Opciones:
-btipo

-ftipo
-htipo
-vnmero
-iincr.
-p

Especifica que lineas de la pgina sern numeradas de acuerdo


al tipo. Los tipos pueden ser:
a para numerar todas las lineas (incluidas las lneas en blanco).
t para numerar solo las lineas con caracteres imprimibles.
n para no numerar las lineas
pstring para numerar solo las lineas que contengan la expresin
regular especificada por string.
Idntico al anterior pero acta sobre los footers.
Idntico al anterior pero acta sobre los headers.
Nmero es el nmero inicial de pgina. Por defecto es 1.
Incr es el incremento usado para la numeracin. Por defecto es 1.
No comienza a numerar nuevamente en cada pgina.

Captulo 7: Comandos Avanzados

Pgina 69

UNIX
-sseparador
-wancho
-nformat

Lic. Ral N. Confalonieri

Separador es el caracter que separa el nmero de linea del texto.


Ancho en cantidad de caracteres usado para el nmero de linea.
Por defecto es 6.
Es el formato de la numeracin. Los formatos reconocidos son:
ln :justificacin izquierda.
rm :justificacin derecha sin ceros adelante.
rz :justificacin derecha con ceros adelante.

Ejemplo:
#nl -v10 -il0 -p archivo
Numera el archivo (no recomienza en cada pgina) comenzando en la linea 10 con un
incremento de 10.

Manipulacin de archivos en bloques


split: Divisin horizontal de archivos
Formato del Comando:
split [opciones] archivo [nombre]
Descripcin:
El comando split divide un archivo de entrada en archivos de salida de 1000 lneas
cada uno (valor por defecto). Si no se da un nombre de archivo de salida, el nombre
por defecto es x, con un sufijo que va desde aa hasta zz.
Opciones:
-l nmero
-b nmero

Divide el archivo en bloques de lneas especificadas por nmero.


Divide el archivo en bloques de bytes especificados por nmero.

Ejemplo:
$split -l 100 listado list
$
cut: Divisin vertical de archivos
Formato del Comando:
cut [opciones] archivo
Captulo 7: Comandos Avanzados

Pgina 70

UNIX

Lic. Ral N. Confalonieri

Descripcin:
El comando cut extrae (corta) columnas de una tabla o campos de las lneas de entrada
de un archivo y las muestra en la salida standard.
Opciones:
-c lista
-f lista
-d caracter

Extrae las columnas especificadas por lista.


Extrae los campos especificados por lista.
Especifica el separador de campos (opcin -f solamente).

Listas:
Una lista de nmeros enteros separados por comas, en orden creciente. Se puede
usar un guin - para indicar rangos.
P.ej:
1, 4 , 7
Posiciones 1, 4 y 7.
1-3, 8
Posiciones de 1 a 3, y 8.
-5, 10
Posiciones desde el comienzo hasta 5, y 10.
3Posiciones desde 3 hasta la ltima.
Ejemplo:
$cut -d : -f 1,5 /etc/passwd > nombreslogin
$
paste: Concatenacin vertical de archivos
Formato del Comando:
paste [opciones] archivo1 archivo2
Descripcin:
El comando paste concatena las lneas correspondientes de los archivos dados como
argumentos y muestra el resultado en la salida standard. Trata a cada archivo como
una columna y las pega en forma yuxtapuesta.
Opciones:
-d
caracter

Convierte los caracteres newline (\n) del primer archivo en


tabuladores (caracter de concatenacin por defecto).
Reemplaza al caracter \n como caracter de concatenacin.

Captulo 7: Comandos Avanzados

Pgina 71

UNIX

Lic. Ral N. Confalonieri

Ejemplo:
$paste -d : codigos articulos > stock
$
join: Operador relacional de archivos
Formato del Comando:
join [opciones] archivo1 archivo2
Descripcin:
El comando join ejecuta una operacin relacional de yuxtaposicin entre dos archivos,
mostrando una lnea en la salida stardard para cada par de lneas con idnticos campos
en los archivos de origen. A menos que se especifique la opcin -t, se considera que
los campos estn separados por espacios.
Opciones:
-a archivo
-e EMPTY
-i
-t caracter
-1 campo
-2 campo

Imprime lneas sin coincidencia del archivo especificado.


Reemplaza campos de entrada faltantes con el string EMPTY.
Ignora las diferencias entre maysculas y minsculas al comparar
campos.
Usa el carcter especificado como separador de campo de
entrada y salida.
Ejecuta la operacin join en el campo especificado del archivo 1.
Ejecuta la operacin join en el campo especificado del archivo 2.

Ejemplo:
#join -t : -i -1 1 -2 1 personas dias
El comando del ejemplo ejecuta un join entre los archivos personas y dias, tomando
como campos de yuxtaposicin el primer campo de cada archivo, que se encuentran
separados por el carcter :, e ignorando si se encuentran en maysculas o
minsculas.
Respaldo de archivos
tar: Archivador
Formato del Comando:
tar clave [argumento...] [archivo|-C directorio]...
Captulo 7: Comandos Avanzados

Pgina 72

UNIX

Lic. Ral N. Confalonieri

Clave:
Es una cadena de caracteres que contiene una (y slo una) letra de funcin, y
posiblemente uno o ms modificadores de funcin, en cualquier orden. No debe haber
espacios en blanco entre la funcin y sus modificadores.
Funciones:
-c
-r
-t
-u
-x
-A
-M

Crea un nuevo respaldo. Cualquier informacin existente en el mismo


se sobreescribe.
Agrega archivo al final del respaldo.
Lista los nombres de los archivos en el respaldo.
Agrega archivo al respaldo si no se encuentre presente o si su fecha
de modificacin es posterior a la que figura en el respaldo.
Extrae el archivo del respaldo y lo restaura en el sistema.
Agrega un archivo tar a otro.
Hace un tar multivolumen.

Modificadores:
b
f

Usa el prximo argumento como factor de bloqueo en archivos de


respaldo. El valor por defecto es 20.
Usa el prximo argumento como el nombre del archivo de respaldo.
Si no se especifica esta opcin, el archivo por defecto es:
/dev/rmt0.
Modo verborrgico.

Argumentos:
Los modificadores b y f requieren argumentos. Si se especifican ambos, el orden de
los argumentos deber ser igual al de los modificadores.
Ejemplo:
$tar -cvf /dev/fd0 *
...

Captulo 7: Comandos Avanzados

Pgina 73

UNIX

Lic. Ral N. Confalonieri

CAPITULO 8:
Programacin en Shell

Captulo 8: Programacin en shell

Pgina 74

UNIX

Lic. Ral N. Confalonieri

Procedimientos Shell (shell scripts):


Un shell script es un archivo de texto (ascii) que contiene comandos de shell.
Para poder ejecutar un shell script, el mismo debe tener permiso de ejecucin (x), al
menos para su dueo.
Adems, para poder ejecutarlo invocando solamente su nombre ,es conveniente que
el path del mismo se encuentre incluido en la variable $PATH. De no ser as, deber
ser ejecutado anteponiendo ./ al nombre del mismo (lo cual indica al shell que debe
ejecutarlo en el directorio corriente).
Para que pueda ser individualizado por el sistema como un script, el mismo debe
incluir una primera lnea como la siguiente:
#!/usr/bin/sh
Variables de Shell:
Existen tres clases de variables de shell:
a. Integradas: generadas durante la instalacin del sistema; no pueden ser modificadas
por el usuario.
b. De Entorno: forman parte del entorno del sistema y sus valores pueden ser
modificados por el usuario (se debe tener cuidado pues modifican el comportamiento
del sistema).
c. De Usuario: definidas por el usuario; pueden ser creadas y modificadas a voluntad
por el mismo.
Asignacin de Valores de Variables:
Las variables de shell se definen e inicializan en un mismo procedimiento:
variable=valor

(p.ej.: contador=0)

El shell no emplea variables tipificadas, por lo que no es necesario declararlas con


anticipacin a su uso (evidente, tratndose de un intrprete de comandos).
Direccionamiento de Variables:
Para acceder al valor almacenado en una variable, se debe prefijar la misma con el
signo $.
variable1=$variable2

Captulo 8: Programacin en shell

(p.ej.: total=$contador)

Pgina 75

UNIX

Lic. Ral N. Confalonieri

Variables Suscriptas (Arrays):


a. Asignacin:
Un array se crea de igual forma que una variable comn, con la diferencia de que el
ndice se encierra entre corchetes.
Ejemplo:
nombre[1]=Hugo
nombre[2]=Paco
nombre[3]=Lus
b. Direccionamiento:
Para direccionar los elementos de un array se debe encerrar el nombre y el subndice
entre llaves.
Ejemplo:
empleado=${nombre[1]}
Reglas Generales para Direccionamiento de Variables:
La regla general para direccionar una variable (sustituir el valor en otra o escribirlo en
la salida standard) es que, adems de prefijarla con el signo $, se la debe encerrar
entre llaves.
La siguiente tabla nos da una idea de las posibilidades que nos de el shell para
direccionar y sustituir variables.
${variable}

${#variable}

${#identificador[*]}
${variable:-valor}
${variable:=valor}

Captulo 8: Programacin en shell

Sustituye el valor de variable, si este est definido. De


otra forma, sustituye el carcter nulo. Las llaves son
requeridas cuando la variable est seguida por una
cadena de caracteres que no debe ser interpretado como
parte del nombre, o cuando la variable est suscripta (es
un array).
Si variable es * o @, se sustituye el nmero de parmetros
posicionales. De otro modo, se sustituye la longitud de la
variable en cantidad de caracteres.
Sustituye el nmero de elementos de un array.
Si la variable est definida y es no nula, sustituye su
contenido; de otra forma sustituye valor.
Si la variable no est definida o es nula, le asigna el
contenido de valor y luego la sustituye.
Pgina 76

UNIX
${variable:?valor}

${variable:+valor}

Lic. Ral N. Confalonieri

Si la variable est definida y es no nula, sustituye su valor.


En caso contrario, imprime valor y sale del subshell. Si
se omite valor, se imprime un mensaje standard.
Si la variable est definida y es no nula, sustituye valor;
en caso contrario no sustituye nada.

Parametros Posicionales de los Comandos:


Cuando se invoca un comando de la forma:
$comando argumento1 argumento2 argumento3
sus argumentos se guardan en variables denominadas parmetros posicionales. Se
puede escribir un shell script que utilice los parmetros posicionales de un comando.
Estos parmetros llevan por nombre un nmero del 1 al 9 y se puede acceder a ellos
como a cualquier variable (prefijndolos con un $).
Variables Integradas:
$$
$0
$#
$1 - $9
$*
$?

PID del comando o script


nombre de un comando o script
n de parmetros pasados al comando o script
parmetros posicionales de un comando o script
cadena que contiene los parmetros pasados al comado o script
cdigo de salida del comando (o del ltimo comando del script)

Uso de comillas (apostrofado o quoting):


a. Comillas Dobles ( ): Delimitan una cadena de caracteres. Resuelven (expanden)
variables dentro de la cadena contenida en ellas.
b. Comillas Simples ( ): Delimitan una cadena de caracteres. No resuelven (expanden)
variables dentro de la cadena contenida en ellas.
c. Comillas Inversas ( ` ` ): ejecutan el comando delimitado por ellas.
d. Backslash ( \ ): si un backslash precede a un carcter especial (tabulador, nueva
lnea, etc.), el shell no lo interpreta como tal.
Caracteres especiales:
\a
\b
\c
\f

Campana.
Backspace.
Imprimir sin nueva lnea.
Nueva pgina (form feed).

Captulo 8: Programacin en shell

Pgina 77

UNIX
\n
\r
\t
\\

Lic. Ral N. Confalonieri

Nueva lnea (new line).


Retorno de carro (line feed).
Tabulador.
Carcter \.

expr: Comando de evaluacin de expresiones


Evala sus argumentos como una expresin y escribe el resultado en la salida standard.
a=0
a=expr $a + 1
Operadores de expr:
adicion.
sustraccin.
producto.
cociente.
resto de un cociente.

+
*
/
%

Evaluacin de expresiones:
La evaluacin de expresiones se puede efectuar de dos fornas:
test <expresion>
o
[ expresion ]
Operadores:
-a
-o
!

operador y lgico.
operador o lgico.
operador not lgico.

a. Evaluacin sobre valores numricos


n <operador> m
-eq
-ne
-gt
-lt

verdadero si n y m son iguales.


verdadero si n y m son distintos.
verdadero si n es mayor que m.
verdadero si n es menor que m.

Captulo 8: Programacin en shell

Pgina 78

UNIX
-ge
-le

Lic. Ral N. Confalonieri

verdadero si n es mayor que o igual a m.


verdadero si n es menor que o igual a m.

b. Evaluacin sobre tipos de archivo


<operador > archivo
-e
-f
-s
-r
-w
-x
-d
-c
-b

verdadero si el archivo existe.


verdadero si el archivo existe y es un archivo ordinario.
verdadero si el archivo existe y no est vaco.
verdadero si el archivo existe y tiene el permiso read habilitado.
verdadero si el archivo existe y tiene el permiso write habilitado.
verdadero si el archivo existe y tiene el permiso execute habilitado.
verdadero si el archivo existe y es un directorio.
verdadero si el archivo existe y es un dispositivo de caracteres.
verdadero si el archivo existe y es un dispositivo de bloques.

c. Evaluacin sobre cadenas de caracteres


<operador> s1 s1 <operador> s2
-z
-n
s1
=
!=

verdadero si la longitud de la cadena es cero.


verdadero si la longitud de la cadena es distinta de cero.
verdadero si la cadena s1 no es nula.
verdadero si las cadenas son iguales.
verdadero si la cadena s1 es distinta a la cadena s2.

Estructuras de Control:
a. if-then-else-fi
if <condicin>
then <lista de comandos 1>
else <lista de comandos 2>
fi
b. for
for <variable> in <lista de valores>
do
<lista de comandos>
done

Captulo 8: Programacin en shell

Pgina 79

UNIX

Lic. Ral N. Confalonieri

c. while
while <condicin (comando exitoso)>
do
<lista de comandos>
done
d. until
until <condicin (comando exitoso)>
do
<lista de comandos>
done
e. case
case <cadena> in
cadena 1) <lista de comandos1>;;
......
cadena n) <lista de comandos n>;;
esac
Ejemplo 1:
#!/usr/bin/ksh
if [ $# -eq 0 ]
then
echo Faltan argumentos;
exit 1;
fi
if [ -f $1 ]
then
rm $1
else
echo No existe el archivo $1
fi
Ejemplo 2:
#!/usr/bin/ksh
clear
echo Script para la muestra de parametros posicionales
echo =================================================
echo
Captulo 8: Programacin en shell

Pgina 80

UNIX

Lic. Ral N. Confalonieri

echo Fecha de Ejecucion__________: `date +%d/%m/%Y`


echo Hora de Ejecucion___________: `date +%X`
echo Nombre del Script ($0)______: `basename $0`
echo Nombre del Directorio_______: `dirname $0`
echo Nro. de Parametros__________: $#
if [ $# -ne 0 ]
then
echo Cadena de Parametros________: $*
numpar=1
for i in $*
do
echo El parametro \$$numpar es: $i;
numpar=expr $numpar + 1;
done
fi
Ejemplo 3:
#!/usr/bin/ksh
while true
do
clear
echo Menu de Tareas con Archivos
echo ===========================
echo
echo 1. Listar Directorio
echo 2. Listar Archivo
echo 3. Crear Archivo (vacio)
echo 4. Editar Archivo
echo 5. Renombrar Archivo
echo 6. Borrar Archivo
echo
echo X. Finalizar Tarea
echo
echo -n Ingrese su opcion:
read opcion
case $opcion in
1) ls -l | pg
;;
2) echo -n Nombre del Archivo:
read archivo
cat $archivo | pg
;;

Captulo 8: Programacin en shell

Pgina 81

UNIX

Lic. Ral N. Confalonieri

3) echo -n Nombre del Archivo:


read archivo
touch $archivo
;;
4) echo -n Nombre del Archivo:
read archivo
vi $archivo
;;
5) echo -n Nombre Actual del Archivo:
read archivo1
echo -n Nombre Nuevo del Archivo:
read archivo2
mv $archivo1 $archivo2
;;
6) echo -n Nombre del Archivo:
read archivo
rm $archivo
;;
X) exit
esac
done
Funciones:
El shell permite la creacin de funciones definidas por el usuario. Estas funciones se
comportan de manera similar a como lo hacen en C o en qualquier otro lenguaje de
alto nivel, es decir, que almacenan bloques de comandos para su posterior utilizacin.
La principal ventaja de utilizar funciones es que permite la creacin de un cdigo ms
compacto y fcil de leer y mantener.
Creacin de Funciones:
La sintaxis para la creacin de funciones es la siguiente:
[function] nombre [()]
{
comando1;
comando2;
...
}
Llamadas a Funciones:
Para llamar o invocar una funcin en un shell script, basta escribir su nombre en el
Captulo 8: Programacin en shell

Pgina 82

UNIX

Lic. Ral N. Confalonieri

lugar en que se desea que se ejecute.


Ejemplo:
comando1;
comando2;
funcin_definida;
comando3;
comando4;
Uso de Parmetros en Funciones:
Cuando se llama a una funcin dentro de un script, los parmetros posicionales pasados al script ($#, $@ y $1-9) son almacenados y reenplazados por los parmetros
pasados a la funcin (es de hacer notar que la ejecucin de una funcin no implica el
lanzamiento de un nuevo proceso). Luego de ejecutada la funcin, los parmetros
posicionales del script son restituidos por sus valores originales.
Las variables locales a una funcin se declaran con el comando interno local. De otro
modo, las variables comunes son compartidas por la funcin y el script que la invoca.
Ejemplo:
#/bin/bash
#====================================================#
# La funcion rect calcula el area de un rectangulo
#
# cuya base y altura son el primer y segundo para#
# metros suministrados en la llamada a la misma
#
#====================================================#
#====================================================#
# Definicion de la funcion
#
#====================================================#
function rect()
{
sup=`expr $1 \* $2`
}
#====================================================#
# Cuerpo principal del script
#
#====================================================#
clear
if [ $# -ne 2 ]
then
echo -e "\nUso: rect base altura\n\n"
Captulo 8: Programacin en shell

Pgina 83

UNIX

Lic. Ral N. Confalonieri

exit
else
base=$1
altura=$2
rect $base $altura
echo -e "\nEl area del rectangulo es $sup \n\n"
fi

Captulo 8: Programacin en shell

Pgina 84

UNIX

Lic. Ral N. Confalonieri

CAPITULO 9:

Administracin del Sistema

Captulo 9: Administracin

Pgina 85

UNIX

Lic. Ral N. Confalonieri

Administracin del Sistema


UNIX puede ser administrado de dos formas:
1. Por medio de utilitarios provistos por el sistema.
2. Por medio de comandos.
Administracin con utilitarios provistos por el sistema
Los utilitarios para administracin de sistema son generalmente herramientas visuales
que permiten la administracin de sistemas UNIX de manera cmoda, rpida y sencilla.
Generalmente, pueden ejecutar las siguientes taras:
1. Auditora y seguridad.
2. Respaldo y restauracin.
3. Clusters.
4. Configuracin del kernel.
5. Redes y comunicaciones.
6. Dispositivos perifricos.
7. Impresoras y graficadores.
8. Discos y sistemas de archivos.
9. Procesos.
10. Usuarios y grupos.
Habitualmente, vienen provistos de dos interfaces diferentes:

Para terminales de caracter emplea una combinacin pantalla/teclado para su


manejo.
Para terminales provistas de sistema X-Windows emplea una combinacin GUI/
mouse para su manejo.

El empleo de estos utilitarios reduce la complejidad de la mayora de las tareas


administrativas. Si bien no es posible administrar la totalidad del sistema con ellos, se
los recomienda para la mayora de los usos ms comunes, dado que elimina la
necesidad de conocer en detalle los comandos administrativos, reduce los errores de
tipeado y permite ahorrar tiempo.
Sistema UNIX
HP-UX
AIX
Linux

Captulo 9: Administracin

Nombre del Utilitario


SAM (System Administration Management)
SMIT (System Management Interface Tool)
Linuxconf

Pgina 86

UNIX

Lic. Ral N. Confalonieri

Administracin por medio de comandos


Administracin de Usuarios
useradd: Agregado de nuevos usuarios al sistema
Descripcion:
El comando useradd crea una cuenta de usuario en el sistema modificando los archivos
/etc/passwd, /etc/group, los archivos de seguridad (trusted system), creando un directorio
home para el usuario y copiando los archivos apropiados en el mismo. La cuenta de
usuario permanece bloqueada hasta la invocacin del comando passwd.
Formato del Comando:
useradd [-u uid] [-g grupo] [-G grupo [, grupo...]] [-d dir] [s shell] [-c comentario] [-m [-k skel_dir]] [-f inactivo] [-e
expiracin] usuario
Opciones:
-u
-g
-G
-d
-s
-c
-m
-k
-f
-e

Especifica el UID para el nuevo usuario.


Especifica el GID para el nuevo usuario.
Especifica el GID para grupos suplementarios.
Especifica el directorio home del nuevo usuario.
Especifica el path y el nombre sel shell para el nuevo usuario.
Permite agregar un comentario (generalmente el nombre completo
del usuario).
Crea el directorio home del nuevo usuario (si no existe previamente).
Especifica el directorio esqueleto que contiene la informacin a ser
copiada al directorio home del nuevo usuario.
Especifica el mximo nmero de dias de inactividad continuada antes
de desactivar la cuenta.
Especifica la fecha de expiracin de la cuenta.

usermod: Modificacin de usuarios existentes en el sistema


Descripcion:
El comando usermod modifica una cuenta de usuario en el sistema

Captulo 9: Administracin

Pgina 87

UNIX

Lic. Ral N. Confalonieri

Formato del Comando:


usermod [-u uid] [-g grupo] [-G grupo [, grupo...]] [-d dir [-m]
] [-s shell] [-c comentario] [-f inactivo] [-l nuevo_logname] [e expira] usuario
Opciones:
-u
-g
-G
-d
-s
-c
-f
-e

Especifica el nuevo UID para el usuario.


Especifica el nuevo GID para el usuario.
Especifica el GID para grupos suplementarios.
Especifica el nuevo directorio home del usuario.
Especifica el nuevo path y el nombre del shell para el usuario.
Permite camfiar el campo de comentario (generalmente el nombre
completo del usuario).
Especifica el mximo nmero de dias de inactividad continuada antes
de desactivar la cuenta.
Especifica la fecha de expiracin de la cuenta.

userdel: Eliminar un usuario existente en el sistema


Descripcin:
El comando userdel elimina una cuenta del sistema
Formato del Comando:
userdel [-r] usuario
Opciones
-r

Elimina del sistema el directorio home del usuario eliminado.

Administracin de Grupos
groupadd: Agrega un nuevo grupo al sistema
Formato del Comando:
groupadd [-g gid [-o]] grupo
Descripcion:
El comando groupadd crea un nuevo grupo en el sistema aadiendo la entrada

Captulo 9: Administracin

Pgina 88

UNIX

Lic. Ral N. Confalonieri

correspondiente el el archivo /etc/group.


Opciones:
-g
-o

Especifica el GID del nuevo grupo.


Permite que el GID sea no nico (duplicado).

groupmod: Modifica grupos existentes en el sistema


Formato del Comando
groupmod [-g gid [-o] ] [-n nuevo nombre] grupo
Descripcion:
El comando groupmod modifica un grupo existente en el sistema, alterando la entrada
correspondiente el el archivo /etc/group.
Opciones:
-g
-o
-n

Especifica el nuevo GID del grupo.


Permite que el GID sea no nico (duplicado).
Especifica el nuevo nombre del grupo.

groupdel: Elimina un grupo existente en el sistema


Formato del Comando:
groupdel grupo
Descripcin:
El comando groupdel elimina un grupo del sistema borrando la lnea correspondiente
el el archivo /etc/group.
Otros comandos de administracin
chown: Cambio de titularidad de dueos de archivos
Formato del Comando:
chwon [opciones] dueo[:grupo] archivo...

Captulo 9: Administracin

Pgina 89

UNIX

Lic. Ral N. Confalonieri

Descripcin:
El comando chown cambia la titularidad de los dueos de los archivos pasados como
parmetro. El usuario especificado por el parmetro dueo pasa a ser en nuevo
propietario de los archivos seleccionados. Opcionalmente, cambia el grupo al que
pertenecen los archivos. Tanto el dueo como el grupo pueden especificarse por su
UID y GID, como por un nombre de usuario y de grupo existentes en los archivos /etc/
passwd y /etc/group, respectivamente.
Opciones:
-h
-R

Cambia el dueo (y opcionalmente el grupo) de un enlace simblico.


Ejecuta la tara en forma recursiva, incluyendo subdirectorios.

chgrp: Cambio de titularidad de grupos de archivos


Formato del Comando:
chgrp [opciones] grupo archivo...
Descripcin:
El comando chgrp cambia la titularidad de los grupos a los que pertenecen los archivos
pasados como parmetro. El grupo puede especificarse por su GID, como por un
nombre de grupo existente en el archivo /etc/group.
Opciones:
-h
-R

Cambia el grupo al que pertenece un enlace simblico.


Ejecuta la tara en forma recursiva, incluyendo subdirectorios.

chsh: Cambio del shell por defecto


Formato del Comando:
chsh usuario [shell]
Descripcin:
El comando chsh cambia el shell por defecto para un usuario. Si no se explicita, utiliza
el shell por defecto del sistema. Este comando modifica el ltimo campo del archivo /
etc/passwd para un usuario definido en l.

Captulo 9: Administracin

Pgina 90

UNIX

Lic. Ral N. Confalonieri

chfn: Cambio de informacin de usuario


Descripcin:
El comando chfn cambia el el contenido del campo de informacin del usuario en el
archivo /etc/passwd. Este campo se utiliza para almacenar informacin general del
usuario en un formato en un formato de cuatro subcampos separados por comas.
Estos subcampos contienen el nombre completo del usuario, la oficina o lugar de trabajo
y los telfonos del trabajo y del domicilio.
Formato del Comando:
chfn [opciones] usuario
Opciones:
-f
-o
-p
-h

Cambia el subcampo nombre.


Cambia el subcampo oficina.
Cambia el subcampo telfono laboral.
Cambia el subcampo telfono del usuario.

Administracin de Procesos
ps: Muestra el estado de los procesos en ejecucin
Formato del Comando:
ps [opciones] [formato de salida]
Descripcin:
El comando ps muestra el estado de los procesos activos en la salida standard.
Opciones:
-A -e
-p lista
-t lista
-u lista

Selecciona todos los procesos.


Selecciona los procesos contenidos en lista.
Selecciona los procesos asociados con los terminales contenidos en
lista.
Selecciona los procesos cuyas ID de usuario o nombres de login estn
contenidos en lista.

Captulo 9: Administracin

Pgina 91

UNIX

Lic. Ral N. Confalonieri

Formato de salida
(ninguno)
-f

Muestra las columnas: pid, tty, time y command.


Muestra las columnas: pid, ppid, cpu, stime, tty, time y args.

kill: Sealizacin de procesos


Formato del Comando:
kill [opciones] pid
Descripcin:
El comando kill enva una seal a un proceso (o procesos) activo para detener, continuar
o finalizar su ejecucin.
Opciones:
-0
-9
-25
-26

Chequea acceso al pid del proceso.


Finaliza la ejecucin de un proceso de manera forzada.
Detiene la ejecucin de un proceso.
Contina la ejecucin de un proceso detenido.

Administracin de Sistemas de archivos


mount: Montaje un sistema de archivos
Descripcin:
El comando mount efecta el montaje de un sistema de archivos en el arbol de directorios
del sistema, habilitndolo para su uso por parte de los programas y usuarios del sistema.
Formato del Comando:
mount [opcin] [punto_de_montaje sistema_a_montar]
Opciones:
-e
-F tipo
-l
-p

Modo verborrgico. Indica en la salida standard el sistema de archivos


que se est montando.
Especifica el tipo de sistema de archivos a montar.
Limita la accin a sistemas de archivos locales.
Retorna la lista de sistemas de archivos montados en el formato del
archivo /etc/fstab.

Captulo 9: Administracin

Pgina 92

UNIX
-Q
-r

Lic. Ral N. Confalonieri

Impide el despliegue de mensajes que resultan de intentar el montaje


de un sistema de archivos ya montados.
Monta el sistema especificado como de slo lectura.

umount: Desmontaje de un sistema de archivos


Descripcin:
El comando umount efecta el desmontaje de un sistema de archivos, inhabilitndolo
para su uso por parte de los programas y usuarios del sistema.
Formato del Comando:
umount sistema_montado
mkfs: Generacin de un sistema de archivos
Descripcin:
El comando mkfs genera un sistema de archivos en una particin o unidad de
almacenamiento sin formato.
Formato del Comando:
mkfs [opciones]
Opciones:
-F tipoFS

-m
-o especif

-V

Determina el tipo de sistema de archivos a generar. Si no est presente


esta opcin, el sistema busca por defecto en los archivos /etc/fstab
y /etc/default/fs.
Muestra la lnea de comando empleada para crear el sistema de
archivos.
Especifica opciones especiales especficas para el sistema de archivos
determinado. Consultar las entradas del manual para cada tipo de
sistema de archivos.
Muestra la lnea de comandos completa, pero no genera accin alguna.

Tipos de Sistemas de Archivos en UNIX:


Unix soporta una amplia variedad de sistemas de archivos. Para una informacin
completa sobre los mismos, vase el Apndice B.

Captulo 9: Administracin

Pgina 93

UNIX

Lic. Ral N. Confalonieri

du: Sumariza el espacio usado en disco


Descripcion:
El comando du muestra el nmero de bloques de 512 bytes ocupados por todos los
archivos y directorios (recursivamente) dentro de un sistema de archivos especificado.
Por defecto, emplea el directorio corriente.
Formato del Comando:
du [opciones] nombre
Opciones:
-a
-k
-r
-s
-x
-t tipoFS

Muestra las entradas para todos los archivos dentro de la jerarqua


especificada.
Muestra el espacio ocupado en bloques de 1024 bytes.
Muestra informacin sobre directorios que no pudieron ser ledos,
archivos no accedidos, etc.
Muestra solamente el gran total del espacio utilizado por la jerarqua
especificada.
Restringe la muestra a los archivos que se encuentran en el dispositivo
especificado.
Restringe la muestra a los sistemas de archivos especificados por
tipoFS.

df: Muestra un reporte del espacio libre en disco


Descripcion:
El comando df muestra el nmero de bloques libres de sistemas de archivos en disco.
Formato del Comando:
df [-F tipoFS] [-bfiklv] [sistema de archivos | dispositivo]
Opciones:
-b
-f
-F tipoFS
-i

Muestra slamente el nmero de kilobytes libre.


Muestra slamente la cuenta de bloques libres (no se muestran los
inodos)
Muestra slamente el reporte para el tipo de sistema de archivos
especificado en tipoFS.
Muestra el nmero total de inodos, el nmero de inodos libres, el

Captulo 9: Administracin

Pgina 94

UNIX
-k
-l
-v

Lic. Ral N. Confalonieri

nmero de inodos ocupados y el porcentaje de inodos en uso.


Muestra el uso en kilobytes.
Muestra el uso en sistemas de archivos locales.
Muestra el procentaje de bloques usados, el nmero de bloques usados
y el nmero de bloques libres. Esta opcin no puede usarse en
combinacin con las otras.

fsck: chequeo de consistencia y reparacin de sistemas de archivos


Descripcion
El comando fsck audita un sistema de archivos o un dispositivo de almacenamiento en
busca de inconsistencias. En caso de encontrarlas, provee un mecanismo interactivo
para su reparacin.
Formato del Comando:
fsck [-F tipoFS] [-m] [-V] [sistema de archivos | dispositivo]
Opciones:
-F tipoFS
-m

-V

Especifica el tipo de sistema de archivos del sistema o dispositivo a


auditar.
Efecta solamente un chequeo de estado. Devuelve los siguientes
valores:
0
El FS puede montarse
32 El FS necesita chequeo adicional
33 El FS est montado
>33 El FS est seriamente daado
Muestra la lnea de comandos pero no ejecuta accin alguna.

quot: Resumen de la posesin de espacio en sistemas de archivos


Descripcion:
El comando quot muestra el nmero de bloques de 1024 bits que posee cada usuario
en el sistema de archivos o dispositivo especificado.
Formato del Comando:
quot [-F tipoFS] [-V] [-cfv] sistema de archivos
quot [-F tipoFS] [-V] [-cfv] -a

Captulo 9: Administracin

Pgina 95

UNIX

Lic. Ral N. Confalonieri

Opciones:
-F tipoFS
-V
-a
-c
-f
-v

Especifica el tipo de sistema de archivos del sistema o dispositivo a


auditar.
Muestra la lnea de comandos pero no ejecuta accin alguna.
Genera un reporte para todos los sistemas de archivos montados.
Genera un histograma mostrando las estadsticas de uso de espacio
en disco. Esta opcin invalida las opciones -f y -v.
Muestra el nmero de archivos y el espacio ocupado por cada usuario.
Muestra tres columnas conteniendo en nmero de bloques no
accedidos en los ltimos 30, 60 y 90 das.

quota: Uso y lmites del espacio en disco


Descripcion:
El comando quota muestra el uso y lmites del espacio en disco para uno o ms usuarios.
Formato del Comando
quota [-v] [usuario...]
Opciones:
(ninguna)
-v

Muestra la informacin solamente cuando el uso exede los lmites


establecidos.
Muestra las estadsticas de uso, se hayan o no exedido los lmites
establecidos.

edquota: Edicin de cuotas de disco para usuarios


Descripcion:
El comando edquota es el editor de cuotas del sistema. Mediante su empleo, se pueden
especificar uno o ms usuarios en la lnea de comandos. El editor de cuotas emplea el
editor especificado en la variable de entorno EDITOR. Por defecto, emplea el vi.
Formato del Comando:
edquota [opciones] usuario...

Captulo 9: Administracin

Pgina 96

UNIX

Lic. Ral N. Confalonieri

Opciones
-p userprot Asigna a los usuarios especificados las cuotas definidas para un
usuario prototipo userprot.
-t
Edita los tiempos lmite para cada sistema de archivos.
repquota: Reporte del uso de cuotas y espacio en disco
Descripcion:
El comando repquota muestra un resumen de uso de espacio en disco y cuotas para
cada sistema de archivos o dispositivo especificado.
Formato del Comando:
repquota [-v] [sistema de archivos | dispositivo]
repquota [-v] -a
Opciones:
-v
-a

Muestra todas las cuotas, an si no estn exedidas o no hay uso de


espacio en disco.
Muestra las cuotas en todos los sistemas de archivos montados.

quotacheck: Auditora de consistencia de cuotas


Descripcion:
El comando quotacheck examina los sistemas de archivos, construye una tabla con el
espacio utilizado en disco y compara esta tabla con la que se encuentra almacenada
en cada sistema de archivos. Si detecta alguna inconsistencia, actualiza la tabla de
cuotas almacenada.
Formato del Comando:
quotacheck [-F tipoFS] [-V] [sistema de archivos]
quotacheck [-F tipoFS] [-V] -a
Opciones:
-F tipoFS
-V
-a

Especifica el tipo de sistema de archivos del sistema o dispositivo a


chequear.
Muestra la lnea de comandos pero no ejecuta accin alguna.
Obtiene la lista de sistemas de archivos a chequear del archivo /etc/
fstab.

Captulo 9: Administracin

Pgina 97

UNIX

Lic. Ral N. Confalonieri

CAPITULO 10:
Impresin

Captulo 10: Impresin

Pgina 98

UNIX

Lic. Ral N. Confalonieri

Modos de impresin en UNIX


Como se puede observar en la fig. xx, existen distintas formas de imprimir archivos en
UNIX.

Impresin en
UNIX

modo directo

slo el usuario root

modo indirecto
(spool)

todos los usuarios

Sistema
BSD

Solaris
Linux

Sistema
SYSV

HP-UX
UnixWare

Sistema
AIX

Compatibilidad con BSD


y SYSV e incorpora
comandos propios

Modo directo:
El modo directo consiste en enviar directamente el archivo a imprimir al archivo de
control dispositivo de la impresora conectada al sistema (usualmente, /dev/lp0),
mediante un comando cp o cat.
Ejemplo:
#cat impresos.txt > /dev/lp0
#
Slo el usuario root puede emplear este modo de impresin, dado que es el nico que
tiene acceso total sobre los el directorio y los archivos que representan dispositivos
fsicos.
Modo indirecto:
El modo indirecto consiste en emplear un sistema denominado SPOOL (Simultaneous
Printing On/Off Line). Este sistema recepta los requerimientos de impresin de los
usuarios y los dispone en forma de cola de espera de trabajos de impresin (printing
queue); luego los enva al dispositivo de impresin por orden de llegada. Un demonio
de impresin es el engargado de controlar el funcionamiento del spool.
El sistema de spool est a disposicin de todos los usuarios.

Captulo 10: Impresin

Pgina 99

UNIX

Lic. Ral N. Confalonieri

Sistema BSD
Este sistema fue desarrollado en Berkeley para su distribucin BSD. Su esquema de
funcionamiento es el siguiente:

Comando de envo
de archivo al SPOOL

Demonio de
impresin

Definicin de dispositivos y
directorios de impresin

lpd

/etc/printcap

SPOOL

lpr

Archivo a
imprimir

Cola de
impresin

/var/spool/lpd/*

Impresora

/dev/*

Averigua estado
del spool

lpq

Elimina trabajos
del spool

lprm

Gestiona el spool
(root)

lpc

lpd: El demonio de impresin de BSD


El comando lpd invoca al demonio de impresin del mismo nombre, quien es el encargado de controlar el sistema de impresin. Recibe da curso a peticiones de los comandos de usuario. Habitualmente, este comando se ejecuta en forma automtica al iniciarse el sistema.

Captulo 10: Impresin

Pgina 100

UNIX

Lic. Ral N. Confalonieri

Comandos del Sistema BSD


lpr: Envo de trabajos al spool
Formato del Comando:
lpr [opciones] archivo...
Descripcin:
El comando lpr enva el archivo especificado como parmetro al spool.
Opciones:
-Pimpresora
-h
-m
-s

-#numero

Fuerza la salida a una impresora especfica.


Suprime la impresin de una pgina de encabezado de trabajo.
Enva un mensaje de correo al finalizar la impresin.
Emplea un enlace simblico al archivo a imprimir. Esto evita que se
copie fsicamente el archivo al spool, ahorrando de esta forma espacio
en disco.
Especifica el nmero de copias a imprimir.

Ejemplo:
#lpr -Plp lista.txt
#
En este ejemplo, se enva el archivo lista.txt al spooler para su impresin en el dispositivo
denominado lp.
lpq: Examen de la cola de impresin del spool
Formato del Comando:
lpq [opciones] {[job#...] | [usuario...]}
Descripcin:
El comando lpq examina el area de spool y emite por pantalla un reporte del estado de
todos los trabajos pertenecientes al mismo. Si se especifica un nmero de trabajo
(job#...), reporta slo el estado del trabajo mencionado. Si se especifica un usuario,
reporta el estado de los trabajos correspondientes al mismo.

Captulo 10: Impresin

Pgina 101

UNIX

Lic. Ral N. Confalonieri

Opciones:
-Pimpresora Especifica una impresora en particular.
-l
Emite un reporte completo para cada uno de los archivos en el spool.
Ejemplo:
#lpq
lp is ready and printing
Rank
Owner
Job Files
active root
63
lista
1st
root
64
personas
2nd
root
65
empresas
#

Total Size
46 bytes
182 bytes
224147 bytes

lprm: Remocin de trabajos de la cola de impresin del spool


Formato del Comando:
lprm [opciones] [job# ...] [usuario ...]
Descripcin:
El comando lprm elimina trabajos de impresin del spooler.
Opciones:
-Pimpresora Especifica una impresora en particular.
Elimina todos los trabajos pertenecientes a un usuario. Si esta opcin
es utilizada por root, se eliminarn todos los trabajos de la cola de
impresin del spool.
job#
Elimina un trabajo en particular mencionando su nmero.
usuario
Eliminar trabajos de un usuario en particular. Slo root puede utilizar
esta opcin.
Ejemplo:
#lprm dfA063odiseo
cfA063odiseo
dfA064odiseo
cfA064odiseo
dfA065odiseo
cfA065odiseo
#
Captulo 10: Impresin

dequeued
dequeued
dequeued
dequeued
dequeued
dequeued

Pgina 102

UNIX

Lic. Ral N. Confalonieri

lpc: Control del spool


Formato del Comando:
lpc [[subcomando] [argumento]]
Descripcin:
El comando lpc es utilizado por el administrador del sistema para controlar el sistema
de spool. Este comando tiene dos modos de operacin: puede invocarse junto con los
subcomandos y los argumentos desde la lnea de comandos o puede invocarse solo,
en cuyo caso nos presenta un prompt para que se invoquen los subcomandos a partir
del mismo.
Subcomandos y Argumentos:
Subcomando y Argumentos
status {impresora | all}

help nombre-comando
clean {impresora | all}
enable {impresora | all}

disable {impresora | all}

start {impresora | all}

restart {impresora | all}

Captulo 10: Impresin

Descripcin
Muestra el estado de la impresora specificada.
Si no especifica el nombre del dispositivo, se
mostrar el estado de la impresora llamada Ip
(la predeterminada).
Suministra informacin sobre un comando de
Ipc determinado.
Borra los los trabajos de la cola de impresin,
incluido los activos.
Permite el almacenamiento en la cola de
impresin de los trabajos dirigidos a una
impresora determinada.
Desactiva el almacenamiento en cola de
impresin de todos los trabajos destinados a
una impresora en particular. Cuando se
desactiva, los usuarios no podrn utilizar Ipr
para imprimir.
Activa el demonio de impresin para que
comience a imprimir todos los trabajos que se
encuentran en la cola de impresin correspondiente a la impresora especificada.
Trata de reiniciar el demonio de impresin (Ipd).
Un usuario puede intentar utilizar este
comando cuando parece que la impresora
funciona correctamente pero no imprime nada,
aun en el caso de que lpq muestre que hay una
serie de trabajos esperando en la zona de
spool. Si quiere volver a reiniciar todas las

Pgina 103

UNIX
stop {impresora | all}

abort {impresora | all}

topq {impresora | all}


trabajo
up {impresora | all}

down {impresora | all}


mensaje

exit
quit

Lic. Ral N. Confalonieri

impresoras, utilice all como nombre del


dispositivo.
Espera a que se complete el trabajo de
impresin en curso y a continuacin desactiva
el demonio de impresin para que detenga la
impresin de los documentos que estn en la
cola de impresin. Cuando se detiene la
impresin, los usuarios pueden seguir
utilizando el comando Ipr, pero no obtendrn
ningn resultado hasta que no se restablezca
el demonio de impresin por medio del
comando start.
Acta igual que stop pero no permite que se
complete la impresin del trabajo que se
encuentra en la impresora. Cuando se reinicia
la impresin, se comienza por la del trabajo
interrumpido.
Mueve el trabajo especificado al principio
de la cola de impresin del dispositivo
especificado.
Invierte la accin del comando down, activa la
cola de impresin e inicia el demonio de
impresin (es decir, combina las acciones
enable y start).
Desactiva la cola de impresin y detiene
al demonio de impresin para que no imprima
los trabajos que se encuentran en el rea de
spool (es decir, combina las acciones disable y
stop). El mensaje se le mostrar a todos los
usuarios que ejecuten el comando lpq.
Finaliza Ipc (nicamente cuando se trabaja en
modo interactivo).
Finaliza Ipc (nicamente cuando se trabaja en
modo interactivo).

/etc/printcap: Archivo de configuracin del spool


Descripcin:
El archivo /etc/printcap contiene la descripcin de los directorios y dispositivos de impresin manejados por el spool.
Este archivo tiene un formato bastante particular, donde cada dispositivo del spool
puede describirse en una lnea, con campos separados por el caracter : (a la

Captulo 10: Impresin

Pgina 104

UNIX

Lic. Ral N. Confalonieri

manera del /etc/passwd), o en varias lneas, teniendo el cuidado de finalizar cada lnea
(menos la ltima) con un caracter \ y de indentar con un tabulador las que siguen
a la primera.
Ejemplo:
lp:\
:lp=/dev/lp0:\
:sd=/var/spool/lpd/lp:\
:mx#0:\
:sh:
Campos del archivo /etc/printcap
Campo
hl

if

lf
lp
mx
of

pl
pw
px
py
rg

rm
rp
se
sd
sf
sh

Tipo
Default
booleano false

Descripcion
Si se especifica este campo y sh no, se imprime
una pgina en blanco como separador entre
documentos.
cadena NULL
Nombre del filtro de texto, al que se invoca cada
vez que se imprime un trabajo. Puede utilizarlo
para interpretar unarchivo y convertrlo a un
formato con el que pueda trabajar la impresora).
cadena /dev/console Nombre del archivo en el que se registran los
errores.
cadena /dev/lp
Nombre del dispositivo que se ha de abrir para
enviar la salida correspondiente a la impresora
nmero 1000
Tamao mximo de los trabajos de impresin (en
KB); un valor de 0 implica un tamao ilimitado.
cadena NULL
Nombre del programa de filtro de salida (tan slo
se le llama una vez si no se especifica el campo
if).
nmero 66
Nmero de lneas por pgina.
nmero 132
Ancho de pgina, en nmero de caracteres.
nmero 0
Ancho de pgina, en pxeles (horizontal).
nmero 0
Largo de pgina, en pxeles (vertical).
cadena NULL
Grupo reducido de usuario en el que nicamente
los miembros de una lista pueden acceder a la
impresora.
cadena NULL
Nombre del sistema de una impresora remota.
cadena IP
Nombre de la impresora remota.
boolsano f alse
Si se especifica, no imprimir varias copias.
cadena /var/spool/lpd Nombre del directorio de spool
booleano f alse
Si se especifica, no imprime los saltos de pgina.
booleano f alse
Si se especifica, no imprime una hoja en blanco
como separador.

Captulo 10: Impresin

Pgina 105

UNIX

Lic. Ral N. Confalonieri

Sistema SYSV
Este sistema fu desarrollado por AT&T para su versin de Unix System V, y su esquema de funcionamiento es el siguiente:
Comando de envo
de archivo al SPOOL

Demonio de
impresin

Definicin de dispositivos y
directorios de impresin

lpsched

/etc/lp/*

SPOOL

lp

Archivo a
imprimir

Cola de
impresin

Impresora

/var/spool/lp/*

/dev/*

Elimina trabajos
del spool

cancel

lpshut

Desactiva el demonio
de impresin

Acepta/rechaza
trabajos del spool

accept
reject

lpadmin

Administra el sistema
de impresin

Habilita/inhabilita
impresoras

enable
disable

lpstat

Averigua estado
del spool

lpsched: El demonio de impresin de SYSV


El comando lpsched invoca al demonio de impresin del mismo nombre, quien es el
encargado de controlar el sistema de impresin. Recibe da curso a peticiones de los
comandos de usuario. Habitualmente, este comando se ejecuta en forma automtica
al iniciarse el sistema.

Captulo 10: Impresin

Pgina 106

UNIX

Lic. Ral N. Confalonieri

Comandos del Sistema SYSV


lp: Envo de trabajos al spool
Formato del Comando:
lp [opciones] archivo...
Descripcin:
El comando lp enva el archivo especificado como parmetro al spool.
Opciones:
Copia fsicamente el archivo al spool. Por defecto, emplea un enlace
simblico al archivo a imprimir, ahorrando de esta forma espacio en
disco.
-dimpresora Fuerza la salida a una impresora especfica.
-h
Suprime la impresin de una pgina de encabezado de trabajo.
-m
Enva un mensaje de correo al finalizar la impresin.
-nnmero
Especifica el nmero de copias a imprimir.
-tttulo
Imprime una pgina de encabezado de trabajo de impresin con el
ttulo especificado.
-w
Enva un mensaje a la terminal del usuario luego de completar la
impresin.
-c

Ejemplo:
#lp -dlp2 lista.txt
#
En este ejemplo, se enva el archivo lista.txt al spooler para su impresin en el dispositivo
denominado lp2.
cancel: Cancelacin de trabajos enviados al spool
Formato del Comando:
cancel [opciones]
Descripcin:
El comando cancel efecta la cancelacin de un trabajo de impresin enviado al spool.

Captulo 10: Impresin

Pgina 107

UNIX

Lic. Ral N. Confalonieri

Opciones:
id...
printer...
-a
-e
-uusario

Especifica la identidad de uno o ms trabajos de impresin. id es la ID


de un requerimiento de impresin emitido por lp.
Especifica el nombre de una o ms impresoras.
Cancela todos los trabajos de impresin enviados por el usuario en
todas las impresoras.
Vaca la cola de impresin del spool de todos los requerimientos para
cada impresora.
Cancela todos los trabajos de impresin del usuario especifidado en
todas las impresoras.

accept: Permiso de encolamiento de trabajos de impresin


reject: Prohibicin de encolamiento de trabajos de impresin
Formato del Comando:
accept destino...
reject destino...
Descripcin:
El comando accept permite que el comando lp acepte el encolamiento de trabajos de
impresin.
El comando reject impide que el comando lp acepte el encolamiento de trabajos de
impresin.
Opciones:
destino...

Nombre de la o las impresoras para las que se quiere permitir o prohibir


el encolamiento de trabajos de impresin.

Ejemplo:
#accept ljet1 djet2
Este comando permite que el comando lp enve requerimientos de impresin a las
impresoras ljet1 y djet2.
#reject ljet1
Este comando prohibe al comando lp el envo de requerimientos de impresin a la
impresora ljet1.

Captulo 10: Impresin

Pgina 108

UNIX

Lic. Ral N. Confalonieri

enable: Habilitacin de impresoras


disable: Inhabilitacin de impresoras
Formato del Comando:
enable impresora...
disable [opciones] impresora...
Descripcin:
El comando enable habilita una o ms impresoras para su uso por parte del spool.
El comando disable inhabilita una o ms impresoras para su uso por parte del spool.
Opciones:
-c

Cancela todos los requerimientos de impresin en curso para las


impresoras mencionadas.

Ejemplo:
#enable ljet1
Este comando habilita la impresora ljet1 para aceptar requerimientos de impresin.
#disable -c ljet1
Este comando inhabilita la impresora ljet1 para aceptar requerimientos de impresin y
cancela todos los trabajos encolados.
lpstat: Reporte del estado del spool
Formato del Comando:
lpstat [opciones]
Descripcin:
El comando lpstat muestra en la salida standard el estado del spool.
Opciones:
-a

Captulo 10: Impresin

Muestra el estado de aceptacin de trabajos para requerimientos de


impresin.

Pgina 109

UNIX
-a[lista]
-d
-o[lista]
-p[lista]
-r
-s
-t
-u[lista]
-v[lista]

Lic. Ral N. Confalonieri

Muestra el estado de aceptacin de trabajos para requerimientos de


impresin.
Muestra el destino por defecto para requerimientos de impresin.
Muestra el estado de requerimientos de salida.
Muestra estado de las impresoras.
Muestra el estado del demonio de impresin.
Muestra un resumen del estado del sistema de impresin.
Muestra informacin completa del estado del sistema de impresin .
Muestra el estado de requerimientos de impresin para un usuario o
usuarios determindados.
Muestra el nombre de las impresoras y los paths de los dispositivos
asociados a ellas.

Ejemplo:
#lpstat -pljet1,djet1
Este comando muestra el estado de las impresoras ljet1 y djet1.
lpadmin: Configuracin del spool
Formato del Comando:
lpadmin [opciones]
Descripcin:
El comando lpadmin sirve para configurar el sistema de spool. NO PUEDE ser utilizado mientras est activo el demonio lpsched.
Opciones:
-pprinter
-xprinter
-pprinter

Agrega la impresora especificada al sistema de spool.


Elimina la impresora especificada del sistema de spool.
Convierte a la impresora especificada en el dispositivo de impresin
por defecto.

Las siguientes subopciones estn disponibles para la opcin -p:


-mmodel
-vdevice

Captulo 10: Impresin

Selecciona un modelo de programa de interfaz para la impresora


especificada.
Asocia un dispositivo a la impresora especificada.

Pgina 110

UNIX

Lic. Ral N. Confalonieri

Ejemplo:
#lpadmin -plpr1 -mhp2934a -v/dev/lp
Este comando asigna a la impresora lpr1 el modelo de interfaz hp2934a, a travs del
dispositivo /dev/lp.
lpshut: Cierre del demonio de impresin
Formato del Comando:
lpshut
Descripcin:
El comando lpshut cierra el demonio de impresin (programa lpsched). Todas las
impresoras que se encuentran activas al momento de invocar lpshut cesarn de imprimir. Los requerimientos de impresin interrumpidos sern impresos completamente
cuando se active nuevamente lpched. Todos los comandos descritos hasta aqu pueden desarrollar sus funciones an cuando lpsched no se encuentre activo.
Sistema AIX
Este sistema fu desarrollado por IBM para su versin de Unix denominada AIX.
Adems de sus propios comandos, AIX permite la utilizacin de los comandos de
impresin de los sistemas BSD y SYSV, lo que permite que los usuarios provenientes
de estos entornos puedan utilizar comandos conocidos, hasta tanto se familiarizan con
el nuevo sistema.
comandos BSD

comandos SYSV

lpr
lpq
lprm

lp
cancel
lpstat

Sistema de
Impresin en AIX

enq
qprt
qcan
...

comandos AIX
Captulo 10: Impresin

Pgina 111

UNIX

Lic. Ral N. Confalonieri

En AIX, no existe un daemon especfico para el spool de impresin, sino que utiliza los
servicios de un daemon de propsito general para el encolamiento de trabajos de
cualquier tipo, incluyendo los de impresin.
Este daemon se llama qdaemon y se vale de otros programas denominados backend
para dar servicio a los distintos tipos de colas. En el caso de las colas de impresin, el
programa backend se denomina piobe.
El esquema de funcionamiento es el siguiente:

enq

qdaemon

/etc/qconfig

/var/spool/lpd/
qdir/*

/var/spool/lpd/
lpstat/*

piobe

Impresora
qprt

qcan

qchk

qpri

qhld

qmov

qdaemon: El demonio del spool de AIX


El demonio qdaemon es un proceso (generalmente iniciado por el comando startsrc)
que planifica los trabajos enviados al spool por el comando enq.
Lee el archivo de configuracin del sistema de spool /etc/qconfig, e imprime el
estado de los dispositivos en los archivos /var/spool/lpd/stat/*, y la descripcin
de los trabajos en los archivos /var/spool/lpd/qdir/*.

Captulo 10: Impresin

Pgina 112

UNIX

Lic. Ral N. Confalonieri

piobe: Back-end para el spool de impresin


El programa piobe (printer input/output back-end) es llamado por qdaemon para procesar
las colas de impresin. Acta como gestor de trabajos de impresin.
enq: Programa de encolamiento de propsito general
Formato del Comando:
enq [opciones] archivo...
Descripcin:
El comando enq acta como un utilitario de encolamiento de propsito general. Enva
los archivos al programa qdaemon, quien se encarga de pasarlos al piobe si se trata de
trabajos de impresin. Permite el encolamiento, cancelacin y cambio de prioridad de
requerimientos de impresin, y muestra del estado de colas y dispositivos.
Opciones:
-P cola
-q
-c

-R nmero
-T ttulo
-N copias
-x nmero
-X

Especifica el nombre de la cola de impresin.


Muestra el estado de la cola considerada por defecto.
Copia el archivo al directorio del spool. Por defecto, emplea un enlace
simblico al archivo a imprimir, ahorrando de esta forma espacio en
disco.
Especifica la prioridad del requerimiento. Por defecto, el valor es de
15; la prioridad mxima para los usuarios es de 20 y para root de 30.
Especifica el ttulo de la pgina de encabezado, y lo despliega cuando
se utiliza la opcin -q.
Especifica el nmero de copias del trabajo de impresin.
Cancela el trabajo de impresin especificado por nmero.
Cancela todos los trabajos del usuario invocante. Si el usuario es root,
cancela todos los trabajos de la cola especificada.

Ejemplo:
$enq -P admin lista.txt
Este comando enva el archivo lista.txt a una cola llamada admin.
$enq -x 413
Este comando cancela el trabajo de impresin n 413.

Captulo 10: Impresin

Pgina 113

UNIX

Lic. Ral N. Confalonieri

qprt: Envo de trabajos de impresin al spool


Formato del Comando:
qprt [opciones] archivo...
Descripcin:
El comando qprt crea y enva a la cola del spool un trabajo de impresin para imprimir
el archivo indicado. Si se especifica ms de un archivo, todos los archivos forman
parte de un slo trabajo de impresin. Estos archivos se imprimen en el orden indicado
en la lnea de comandos.
Opciones:
-P
-b
-t
-w

cola
nmero
nmero
nmero

Especifica el nombre de la cola de impresin.


Especifica el mrgen inferior.
Especifica el mrgen superior.
Especifica el ancho de pgina en la cantidad de caracteres indicadas
por nmero.

Ejemplo:
#qprt -P admin lista.txt
Este comando enva el archivo lista.txt a una cola llamada admin.
qcan: Cancelacin de trabajos de impresin
Formato del Comando:
qcan [opciones]
Descripcin:
El comando qcan cancela trabajos de impresin enviados al spool.
Opciones:
-P cola
-x nmero
-X

Captulo 10: Impresin

Especifica el nombre de la cola de impresin.


Cancela el trabajo de impresin especificado por nmero.
Cancela todos los trabajos del usuario invocante. Si el usuario es root,
cancela todos los trabajos de la cola especificada.

Pgina 114

UNIX

Lic. Ral N. Confalonieri

Ejemplo:
#qcan -P admin -x 123
Este comando cancela el trabajo n 123 de la cola llamada admin.
qchk: Comprobacin del estado de los trabajos de impresin
Formato del Comando:
qchk [opciones]
Descripcin:
El comando qchk muestra el estado de los trabajos de impresin, colas de impresin o
usuarios especificados.
Opciones:
-# nmero
-A
-P cola
-q
-u usuario

Muestra el estado del trabajo de impresin cuyo nmero se especifica.


Muestra el estado de todas las colas de impresin.
Especifica el nombre de la cola de impresin.
Especifica la cola de impresin por defecto.
Muestra el estado de los trabajos de impresin enviados por el usuario
especificado.

Ejemplos:
#qchk -P admin
Este comando muestra el estado de la cola de impresin llamada admin.
#qchk -q
Este comando muestra el estado de la cola de impresin por defecto.
qpri: Asignacin de prioridad a un trabajo de impresin
Formato del Comando:
qpri [opciones]
Descripcin:
El comando qpri asigna prioridad a un trabajo en una cola de impresin.
Captulo 10: Impresin

Pgina 115

UNIX

Lic. Ral N. Confalonieri

Opciones:
-# nmero
-a nmero

Especifica el n de trabajo de impresin que se desea priorizar.


Especifica la prioridad del requerimiento. Por defecto, el valor es de
15; la prioridad mxima para los usuarios es de 20 y para root de 30.

Ejemplos:
#qchk -# 123 -a 20
Este comando asigna al trabajo de impresin n 123 un valor de prioridad 20.
qheld: Retencin y liberacin de trabajos de impresin
Formato del Comando:
qheld [opciones]
Descripcin:
El comando qheld retiene trabajos de impresin enviados al spool o libera trabajos
retenidos.
Opciones:
-# nmero
-P cola
-r
-u usuario

Especifica el nmero de trabajo de impresin que se desea retener o


liberar.
Especifica el nombre de la cola de impresin.
Libera un trabajo retenido.
Especifica el usuario cuyos trabajos de impresin se desea retener o
liberar.

Ejemplos:
#qheld -# 123
Este comando retiene el trabajo de impresin nmero 123..
qmov: Desplazamiento de trabajos entre colas de impresin
Formato del Comando:
qheld [opciones]

Captulo 10: Impresin

Pgina 116

UNIX

Lic. Ral N. Confalonieri

Descripcin:
El comando qmov mueve un trabajo de impresin a otra cola de impresin del spool.
Opciones:
-# nmero
-m cola
-P cola
-u usuario

Especifica el nmero de trabajo de impresin que se desea reubicar.


Especifica la nueva cola de impresin de destino.
Especifica el nombre de la cola de impresin en que se encuentra el
trabajo que se desea reubicar.
Especifica el usuario cuyos trabajos de impresin se desean reubicar.

Ejemplos:
#qmov -mljet1 -#123
Este comando reubica el trabajo de impresin nmero 123 a la cola ljet1.
#qmov -mljet1 -Pdjet1
Este comando reubica todos los trabajo de impresin nmero de la cola djet1 a la cola
ljet1.
qstatus: Estado de las colas de impresin del spool
Descripcin:
El comando qstatus muestra el estado de las colas de impresin del spool.
Opciones:
-# nmero
-A
-L
-P cola
-q
-u usuario

Captulo 10: Impresin

Muestra el estado del trabajo de impresin cuyo nmero se especifica.


Muestra el estado de todas las colas definidas en el sistema.
Ejecuta un listado detallado del estado solicitado en la lnea de
comando.
Especifica el nombre de la cola de impresin en que se encuentra el
trabajo que se desea reubicar.
Muestra el estado de la cola de impresin por defecto.
Muestra el estado de los trabajos enviados por el usuario especificado.

Pgina 117

UNIX

Lic. Ral N. Confalonieri

Ejemplos:
#qstatus -A
Este comando muestra el estado de todas las colas de impresin del sistema. Produce
una salida como la siguiente:.
Queue
----qprt0

bsh
lpr1
rp0

Dev
--lp0

Status
-----RUNNING
QUEUED
QUEUED
bshde READY
Ip2
READY
drp0 DOWN
QUEUED

Job
--54
56
59

Files
----DOC1
DOC2
DOCU6

User
PP
----user0l 9
root
root

60

DOCU7

root

%
-31

Blks
---9
1
1

Cp
-1
1
1

Rnk
--1
2
3

El significado de las columnas del listado es el siguiente:


Queue
Dev
Status
Job
Files
User
PP
%
Blks
Cp
Rnk

Nombre de la cola de impresin


Nombre de dispositivo
Actual estado del trabajo
Nmero del trabajo de impresin
Nombre del archivo.a imprimir
Usuario propietario del trabajo de impresin
Pginas del trabajo de impresin
Porcentaje completado del trabajo de impresin
Nmero de blocks del trabajo
Nmero de copias
Orden del trabajo en la cola de impresin

Los posibles estados del trabajo de impresin son (columna 3: Status):


READY
DEV_WAIT
RUNNING
DOWN
UNKNOWN
OPR_WAIT

Captulo 10: Impresin

Impreibra preparada para aceptar trabajos.


Impresora no preparada: por falta de papel, papel atascado, o cual
quier problema similar.
Trabajo en impresin.
Impresora no preparada: probablemente por el operador para mantenimiento.
Generalmente indiaca un problema con la impresora o subsistema
de impresin.
Trabajo suspendido esperando una respuesta del operador.

Pgina 118

UNIX

Lic. Ral N. Confalonieri

/etc/qconfig: Archivo de configuracin del spool


El archivo /etc/qconfig describe la totalidad de las colas que conforman el sistema de
spool de AIX. Una cola es una lista nominada y ordenada de requerimientos para un
dispositivo especfico. Este dispositivo (hardware o software) puede dar servicio a un
requerimiento por vez. La cola provee acceso serial al dispositivo. Cada cola debe ser
atendida por lo menos por un dispositivo.
El demonio qdaemon lee la versin ASCII del archivo /etc/qconfig y crea una versin
binaria, /etc/qconfig.bin. Por lo tanto, el archivo /etc/qconfig debe poseer una estructura especfica para ser procesado por qdaemon.
El archivo /etc/qconfig est compuesto por bloques de texto denominados stanzas
(instancias u ocurrencias). Cada cola est representada por un par de stanzas. La
primera est referida a la cola de impresin. La segunda est referida al dispositivo de
impresin. Cada stanza est compuesta de pares del tipo parametro = valor que describen las funciones y propiedades de la misma.
Formato General de una Cola de Impresin:
nombre_cola:
device = nombre_dispositivo
up = TRUE o FALSE
discipline = fcfs o sjn
nombre_dispositivo:
file = nombre_dispositivo_fsico o FALSE
header = always o group o never
trailer = always o group o never
access = both o write
backend = path_completo_al_programa_backend
Ejemplo de un archivo /etc/qconfig real:
asc:
device = lp1
lp1:
file = /dev/lp1
header = never
trailer = never
access = both
backend = /usr/lib/lpd/piobe
gl:
device = lp1
lp1:

Captulo 10: Impresin

Pgina 119

UNIX

Lic. Ral N. Confalonieri

file = /dev/lp1
header = never
trailer = never
access = both
backend = /usr/lib/lpd/piobe
pcl:
device = lp1
lp1:
file = /dev/lp1
header = never
trailer = never
access = both
backend = /usr/lib/lpd/piobe
ps:
device = lp1
lp1:
file = /dev/lp1
header = never
trailer = never
access = both
backend = /usr/lib/lpd/piobe
En este ejemplo se definen cuatro colas de impresin (asc, gl, pcl y ps) que son atendidas
por el mismo dispositivo (/dev/lp1).
Impresoras virtuales:
Una impresora virtual es una vista lgica simple de todo el entorno de la impresora
desde el punto de vista del usuario. Describe una combinacin entre la configuracin
especfica de la cola, el dispositivo que la da servicio a la misma, el data stream soportado
y el dispositivo de impresin propiamente dicho.
La definicin de una impresora virtual no est contenida en el archivo /etc/qconfig. Su
presencia est implcita por el hecho de que el programa backend para la cola
correspondiente es piobe, pero est almacenada en otro lugar del sistema de archivos
de AIX. La definicin de una impresora virtual se crea al mismo tiempo que la definicin
de la cola de impresin, via el comando piomkpq. El nombre de la cola se emplea
generalmente para identificar y acceder a la definicin de la impresora virtual.
Las impresoras virtuales son muy importantes debido a que muchas impresoras pueden
soportar mltiples data streams. Por lo tanto, las impresoras virtuales proveen un mtodo
para identificar mltiples data streams a un dispositivo de impresin simple.

Captulo 10: Impresin

Pgina 120

UNIX

Lic. Ral N. Confalonieri

Esquema del sistema con impresoras virtuales:


asc

gl

pcl

ps

Colas de
Impresin

asc:4039

asc:4039

asc:4039

asc:4039

/dev/4039

Impresoras
virtuales

Driver

Dispositivo
Fsico
4039

pr: Impresin con formato para todos los sistemas


Formato del Comando:
pr [opciones] archivo
Descripcin:
El comando pr imprime en la salida standard el archivo con formato para impresin,
con cortes de pgina, nmeros de pgina y encabezados. Para enviar la salida al
spool, se debe enlazar mediante un pipe con el comando de impresin adecuado al
sistema en que se est trabajando (lpr en BSD, lp en SYSV, o enq o qprt en AIX).

Captulo 10: Impresin

Pgina 121

UNIX

Lic. Ral N. Confalonieri

Opciones:
-d
-h encab.
-l long.
-o margen
-t
-w ancho

Escribe la salida a doble espacio entre lneas.


Especifica el encabezamiento que se mostrar, en lugar del nombe
del archivo (por defecto).
Especifica la longitud de la pgina en lneas (66 por defecto).
Especifica el margen en cantidad de caracteres.
Omite encabezados y pies de pgina.
Especifica el ancho de la pgina en caracteres (72 por defecto).

Ejemplos:
#pr -d -h Listado de Cuentas -l 70 -w 78 listado.lst | prn
Este comando imprime el archivo listado.lst a doble espacio, con el ttulo Listado de
Cuentas, a 70 lneas y 78 caracteres por pgina.

Captulo 10: Impresin

Pgina 122

UNIX

Lic. Ral N. Confalonieri

CAPITULO 11:

Herramientas de Desarrollo

Captulo 11: Herramientas de Desarrollo

Pgina 123

UNIX

Lic. Ral N. Confalonieri

make: Actualizacin y regeneracin de grupos de archivos y programas


Formato del Comando
make [opciones] [-f archivo]
Introduccin
En un proyecto de programacin de cierta magnitud, es una prctica comn la divisin
de grandes mdulos en piezas mas pequeas y manejables.
Estas piezas pueden requerir diferentes tratamientos. Algunas necesitarn correr un
preprocesador como cpp, otras debern ser procesadas por un programa generador
como yacc o lex. Las salidas de stos podran entonces ser compiladas con opciones
especiales con ciertas definiciones y declaraciones. El cdigo resultante de estas
compilaciones podra entonces necesitar ser linkeditado con ciertas bibliotecas bajo el
control de opciones especiales.
Desafortunadamente es fcil perder la pista de qu archivos deben ser reprocesados
o recompilados despus de efectuar un cambio en algn lugar del cdigo fuente, que
archivos dependen de cuales otros, que archivos han sido modifcados recientemente,
y cual es la exacta secuencia de operaciones necesaria para crear una nueva versin
del programa.
make provee un mecanismo simple para actualizar programas que dependen de varias
operaciones en diversos archivos. Es posible decirle a make la secuencia de comandos
necesaria para crear esos archivos. Cada vez que un archivo es modificado en cualquier
parte del proyecto el comando make crear los archivos correspondientes correctamente
y con un mnimo de esfuerzo, mecanizando muchas de las actividades d desarrollo y
mantenimiento de software.
Se debe definir un archivo de descripcin llamado makefile o Makefile que ser
usado por el comando make. Con slo ejecutar el comando:
$make
alcanza para actualizar los archivos necesarios sin importar cuntos de ellos han sido
modificados. En la mayoria de los casos, el archivo de descripcin es fcil de escribir y
los cambios no son frecuentes, de esta forma el ciclo tpico de operaciones para el
desarrollo de programas es: pensar editar make testear.

Captulo 11: Herramientas de Desarrollo

Pgina 124

UNIX

Lic. Ral N. Confalonieri

Contenido de un makefile
a. Reglas Explcitas
En su forma ms sencilla, un archivo makefile contiene una o mas lneas de texto
llamadas reglas (rules). Estas lineas muestran como dependen unas archivos de otros
y que comandos es necesario ejecutar para poner al dia el archivo final.
Una regla tiene la siguiente forma:
objetivo: [dependencias] [;comando ...]
[comando ...]
Objetivo:
Dependencias:
Comando:

es el nombre del archivo que se quiere actualizar.


son los nombres de los archivos que dependen de l.
es el nombre del comando que se debe aplicar a las dependencias
para lograr el objetivo.

Nota: los comandos enumerados en la linea siguiente a la del objetivo debern estar
precedidos por un tabulador, para que make los reconozca como un comando.
Para ilustrar esta supongamos que un programa llamado prog es creado compilando y
linkeditando tres archivos en lenguaje c: x.c, y.c y z.c con la librerla ls. Asumamos que
x.c e y.c comparten declaraciones de un archivo llamado defs y z.c no (o sea que x.c e
y.c contienen la linea #include defs mientras que z.c no).
Por convencin la salida de las compilaciones c se encontrarn en x.o y.o y z.o.
El siguiente texto muestra el archivo makefile, el cual describe las relaciones entre
los archivos y la operaciones que deben realizarse.
prog: x.o y.o z.o
cc x.a y.o z.o -ls -o prog
x.o: x.c defs
cc -c x.c
y.o: y.c defs
cc -c y.c
z.o: z.c
cc -c z.c
El comando make realizar las operaciones necesarias para recrear prog despus de
que cualquier cambio se haya realizado en los cuatro fuentes: x.c, y.c, z.c o defs.
Captulo 11: Herramientas de Desarrollo

Pgina 125

UNIX

Lic. Ral N. Confalonieri

En nuestra ejemplo, la primer regla dice que el objetivo es prog y que sus dependencias
son tres archivos .o (objetos). El comando describe como linkeditarlos y crear prog.
Las dos reglas siguientes expresan que x.o y y.o dependen del archivo defs adems
de sus correspondientes fuentes x.c e y.c y como compilarlos para generarlos.
La ltima regla establece que el objetivo z.o slo depende de z.c e indica como
compilarlo.
Si al ejecutar make algunos de los fuentes tiene fecha posterior a la fecha del ejecutable
prog, make se encarga de compilar los mdulos necesarios y linkear todos los mdulos
para crear prog.
Si ninguna de los fuentes fue modificado desde la ltima vez que fue creado prog,
todos los archivos serian actuales a la fecha de construccin de prog, y el comando
make anunciarla que el proyecto est actualizado y terminara.
Si, por ejemplo solo y.c tuvo cambios, solo l seria recompilado y se necesitara volver
a crear prog.
b. Reglas Implcitas
Algunas reglas de actualizacin de archivos se usan con mucha frecuencia. Por ejemplo,
la manera acostumbrada de generar un archivo objeto es procesando un archivo fuente
en lenguaje C con el compilador de C, cc.
Las reglas implcitas instruyen a make sobre la forma de emplear tcnicas comunes de
manera tal que no sea necesario especificarlas cuando se desea emplearlas.
Ejemplo:
La regla implcita:
main.o: defs.h
es equivalente a:
main.o: main.c defs.h
cc -c main.o defs.h
Algunas reglas implicitas:
.o
.o

.c
.cc .C

Compila programas en C.
Compila programas en C++.

Captulo 11: Herramientas de Desarrollo

Pgina 126

UNIX
.o
.o
.c
.c

.p
.f
.y
.l

Lic. Ral N. Confalonieri

Compila programas en Pascal.


Compila programas en Fortran.
Genera programas en C a partir de yacc.
Genera programas en C a partir de lex.

c. Macros o Variables
Make provee un sencillo mecanismo de macros para substituciones en sus lineas.
Una macro o variable se define de la siguiente forma:
nombre = valor ...
Una macro o variable se invoca encerrando su nombre entre parntesis y precediendo
el mismo con el signo $.
Ejemplo:
OBJETOS = x.o y.o z.o
LIBRERIAS = -ls
prog: $(OBJETOS)
cc $(OBJETOS> $(LIBRERIAS) -o prog
Est caracteristica es muy til para el mantenimiento del archivo de definiciones.
d. Pseudo-objetivos u Objetivos Falsos (Phony Targets)
Es muchas veces til incluir reglas con pseudo-objetivos, o sea objetivos que no
dependen de ningn otro.
Los pseudo-objetivos permiten a make realizar taras que no estn dirctamente
relacionadas con la creacin de un programa, tales como copiar o remover archivos.
Por ejemplo, si el makefile contiene una regla como la siguiente:
limpiar:
rm -f x.o y.o z.o
Cuando se llame al make de la siguiente manera:
$make limpiar
se borrarn los archivos especificados. Si el objetivo limpiar no depende de ningn
otro (no figura como dependencia de ningn otro objetivo), no se ejecutar si no es
invocado especficamente.

Captulo 11: Herramientas de Desarrollo

Pgina 127

UNIX

Lic. Ral N. Confalonieri

d. Comentarios
Toda lnea que comience con el smbolo #, ser tratada como un comentario.
Ejemplo:
# Este es la regla que define el objetivo principal
prog: x.o y.o z.o
cc x.a y.o z.o -ls -o prog
e. Supresin de la impresin de comandos
Por defecto, make imprime en la salida standard todos los comandos que ejecuta. Si
se desea suprimir est caracterstica, se deben prefijar con el smbolo @.
Ejemplo:
# Este es la regla que define el objetivo principal
prog: x.o y.o z.o
@echo Procesando el objetivo pricipal
@cc x.a y.o z.o -ls -o prog
@echo Objetivo pricipal procesado
f. Directivas
Son comandos que instruyen a make para realizar alguna tara durante el proceso de
lectura de makefile.
La ms comn es include, que permite la inclusin de archivos externos a makefile. Se
debe indicar escribindola al comienzo de la lnea.
include <archivo>
Ejemplo:
prog: x.o y.o z.o
cc x.a y.o z.o -ls -o prog
include x.mk
include y.mk
include z.mk
g. Definiciones
Las definiciones sn una forma de generar variables (o macros) compuestas por varias

Captulo 11: Herramientas de Desarrollo

Pgina 128

UNIX

Lic. Ral N. Confalonieri

lneas de comando. Su sintxis es la siguiente:


define <variable>
accin1
accin2
...
endef
Ejemplo:
define compilar
@echo Llamando al compilador
@cc prog.c
endef
Los macros generados por def se invocan como cualquier otro, es decir, encerrando el
nombre del macro entre parntesis y prefijndolo con un signo $.
h. Condicionales
Los condicionales hacen que se ejecute o ignore un comando de acuerdo al estado de
una o ms variables.
Hay dos tipos de condicionales:
H

Los que preguntan por la definicin (o indefinicin) de una variable

ifdef variable
texto_si_verdadero
else
texto_si_falso
endif
ifndef variable
texto_si_verdadero
else
texto_si_falso
endif
H

Los que preguntan por la igualdad (o desigualdad) entre dos variables o entre una
variable y una constante.

Captulo 11: Herramientas de Desarrollo

Pgina 129

UNIX

Lic. Ral N. Confalonieri

ifeq (variable1,variable2)
texto_si_verdadero
else
texto_si_falso
endif
ifneq (variable1,variable2)
texto_si_verdadero
else
texto_si_falso
endif
Ejemplo:
ifdef PRINCIPAL
include ppal.mk
else
include secu.mk
endif
En este ejemplo se pregunta si est definida la variable PRINCIPAL; en caso afirmativo
se ordena la inclusin del archivo ppal.mk; en caso contrario, se ordena la inclusin
del archivo secu.mk.
Ejemplo:
USUARIO="root"
...
...
ifneq ($(USUARIO),"root")
@echo $(USUARIO)
else
@echo "El usuario no puede ejecutar este comando"
endif
En este ejemplo se pregunta si la variable contiene un valor distinto; en caso afirmativo,
se imprime el valor de la variable; en caso contrario, se imprime un mensaje indicando
un mensaje de error.

Captulo 11: Herramientas de Desarrollo

Pgina 130

UNIX

Lic. Ral N. Confalonieri

Opciones
-f archivo
-i
-n
-r
-s
-t
-u
-w

Nombre del archivo de descripcin (si no existe busca y usa makefle


o Makefile).
Ignora cdigos de error de los comandos invocados.
No ejecuta. Solo imprime los comandos.
No usa las reglas propias.
Modo silencio. No imprime las lineas antes de ejecutarlas.
Ejecuta touch sobre los archivos objetivos (los pone al dia).
Ejecuta incondicionalmente la actualizacin de todos los objetivos.
Suprime la impresin de mensajes de advertencia. Slo imprime los
fatales.

Captulo 11: Herramientas de Desarrollo

Pgina 131

UNIX

Lic. Ral N. Confalonieri

RCS: Sistema de Control de Revisiones


Descripcion
El RCS (Revision Control System - Sistema de Control de Revisiones) permite la gestion
de revisiones de archivos de texto. Automatiza el almacenamiento, recuperacion,
inscripcion, identificacion e intercalacion de revisiones. RCS es util para emplear con
archivos de texto cuya revision es frecuente, tales como programas, documentos, informes, cartas, etc.
Caractersticas de RCS

Almacenamiento y recuperacin de versiones de archivos de texto. RCS almacena las versiones en una forma que permite ahorrar espacio. Las versiones pueden ser recuperadas de acuerdo al nmero, nombre, nombre simblico, fechas,
autores y estados.

Mantenimiento de una historia completa de modificaciones. RCS almacena todos los cambios automticamente. Adems del texto de la versin, RCS almacena el autor, fecha y hora del check-in (depsito) y un texto que describe la modificacin.

Resolucin de conflictos de acceso. Cuando dos o ms personas tratan de modificar simultneamente la misma versin del archivo, RCS los alerta y evita que
una modificacin corrompa a la otra.

Mantenimiento de un rbol de versiones. RCS puede mantener lneas separadas


de desarrollo para cada archivo. Almacena las revisiones en una estructura de
rbol que representa la relacin de dependencia entre versiones.

Intercalacin de versiones y resolucin de conflictos. Dos lneas separadas de


desarrollo pueden ser unidas por medio de la intercalacin. Si las versiones a ser
intercaladas afectan las mismas lneas de texto en un archivo, RCS marca los
cambios superpuestos.

Control de entrega y configuracin. Las versiones pueden ser nombradas simblicamente como experimentales, estables o entregadas. Con estas facilidades,
las configuraciones de un archivo pueden ser descriptas de manera simple y
directa.

Identificacin automtica de cada versin, con nombre de archivo, nmero de


versin, fecha y hora de creacin, autor, etc. Esta identificacin es como un sello
que puede ser embebido en los lugares apropiados del texto de una version.
Estos sellos facilitan la tara de determinar cuales versiones de que archivos

Captulo 11: Herramientas de Desarrollo

Pgina 132

UNIX

Lic. Ral N. Confalonieri

componen una configuracin determinada.

Minimizacin del almacenamiento secundario. RCS emplea muy poco espacio


para las versiones, dado que slo se almacenan las diferencias.

Sumario de Comandos RCS


Nombre
ci
co
rcs
rlog
ident
rcsdiff
rcsmerge
rcsclean

Descripcin
Deposita una nueva version de un archivo de trabajo en un archivo RCS.
Extrae una version de un archivo RCS a un archivo de trabajo.
Cambia atritbutos de archivos RCS.
Imprime en la salida standard los mensajes de log y otra informacin
acerca de archivos RCS.
Identifica palabras clave RCS en archivos de trabajo.
Compara versiones de archivos RCS con archivos de trabajo.
Intercala versiones de archivos RCS en archivos de trabajo.
Limpia archivos de trabajo.

Comandos RCS
ci: Depsito (check-in) de archivos de trabajo
Formado del Comando:
ci [opciones] archivo_de_trabajo ...
Descripcin:
El comando ci deposita una nueva versin de un archivo de trabajo en el correspondiente
archivo RCS.
Si el archivo RCS no existe, lo crea y deposita el contenido del archivo de trabajo como
la versin inicial (por defecto, la 1.1). Para la creacin del archivo RCS, ci busca primero
la existencia de un subdirectorio RCS bajo el directorio de trabajo, y, si lo encuentra,
crea el archivo RCS en l; en caso contrario, lo crea en el directorio de trabajo.
Un archivo de trabajo creado por ci hereda los permisos de lectura y ejecucin del
archivo de trabajo. Si el archivo RCS existe, ci preserva sus permisos de lectura y
ejecucin. El comando ci siempre inhabilita el permiso de escritura de los archivos
RCS.
El usuario del comando debe poseer permisos de lectura y escritura sobre el archivo
de trabajo y sobre el directorio que contiene los archivos RCS, y permiso de lectura
sobre el archivo RCS.

Captulo 11: Herramientas de Desarrollo

Pgina 133

UNIX

Lic. Ral N. Confalonieri

Para cada versin depositada, ci peticiona el ingreso de un mensaje descriptivo de la


misma. Este mensaje debe resumir los cambios realizados. Para concluir el ingreso
del texto se debe tipear [Ctrl-D] o un punto solitario en una lnea en blanco seguido
de [Enter].
Opciones:
Fuerza el depsito de un archivo de trabajo an cuando este sea
idntico a la ntima revisin existente.
-l[rev]
Trabaja de manera idntica a la opcin -r slo que realiza un co -l
implcito para la versin depositada.
-mmensaje Emplea la cadena entre comillas como el mensaje de log de la revisin
depositada.
-nnombre Emplea la cadena entre comillas como el nombre simblico de la
revisin depositada.
-q[rev]
Modo silencioso. La salida de diagnstico no se imprime.
-r[rev]
Asigna el nmero .
-sestado Inicializa el estado de la revisin a estado. Por defecto es exp.
-t[archivo] Escribe el texto descriptivo del archivo RCS. Si no se especifica ningn
archivo de texto, RCS solicita al usuario la introduccin del texto
requerido.
-u[rev]
Similar a la opcin -l, exepto que la revisin depositada no se bloquea.
-f[rev]

Ejemplo:
$ci -l capitulo1.tex
RCS/capitulo1.tex,v < capitulo1.tex
new revision: 1.5; previous revision: 1.4
enter log message, terminated with single . or end of file:
>> Ultima revision del capitulo
>> .
$ls -l cap*
-rw-rr
1
root
root
142 May 15 19:58
capitulo1.tex
$
co: Extraccin (check-out) de archivos de trabajo
Formado del Comando:
co [opciones] archivo_de_trabajo ...
Descripcin:
El comando co extrae una versin de un archivo de trabajo del correspondiente archivo
RCS.
Captulo 11: Herramientas de Desarrollo

Pgina 134

UNIX

Lic. Ral N. Confalonieri

El usuario del comando debe poseer permiso de escritura en el directorio de trabajo,


permiso de lectura en el archivo RCS y permiso de lectura y escritura en el directorio
que contiene el archivo RCS.
Si se intenta extraer un archivo de trabajo sin haber depositado una nueva revisin, co
avisa que hay un archivo del mismo nombre en el directorio de trabajo y solicita
confirmacin para sobreescribir el archivo preexistente.
Si se desea editar el archivo de trabajo, es indispensable hacer un co con la opcin -l,
para bloquear la versin contra ediciones de otros usuarios.
Opciones:
-l[rev]
-p[rev]

-q[rev]
-dfecha
-r[rev]
-sestado
-wusuario

Bloquea la revisin extraida por el usuario (en el archivo RCS). Esto


impide que otro usuario edite la misma versin.
Imprime el archivo extraido en la salida standard en lugar de
almacenarlo en el archivo de trabajo. Esta opcin es til cuando el
comando co es parte de un pipe.
Modo silencioso. La salida de diagnstico no se imprime.
Extrae la ltima revisin de la rama seleccionada cuya fecha de
depsito es igual o menor que fecha.
Extrae la ltima revisin cuyo nmero es igual o menor que rev.
Extrae la ltima revisin de la rama seleccionada cuyo estado es igual
a estado.
Extrae la ltima revisin de la rama seleccionada cuyo depositario es
igual a usuario (logname).

rcs: Cambio de atributos de archivos RCS


Formado del Comando:
rcs [opciones] archivo_RCS
Descripcin:
El comando rcs crea nuevos archivos RCS o cambia los atributos de archivos RCS ya
existentes.
Opciones:
-i

Crea e inicializa un archivo RCS, pero no deposita ninguna versin en


l. Si el archivo RCS no tiene un path prefijado, rcs busca un directorio
denominado RCS bajo el directorio de trabajo. Si no lo encuentra,
crea el archivo RCS en el directorio de trabajo.

Captulo 11: Herramientas de Desarrollo

Pgina 135

UNIX

Lic. Ral N. Confalonieri

Bloquea la revisin cuyo nmero es rev. Si se omite el nmero, se


bloquea la ltima revisin.
-L
Establece el bloqueo estricto para las revisiones. Normalmente esta
es la opcin por defecto.
-u[rev]
Desbloquea la revisin cuyo nmero es rev. Si se omite el nmero, se
desbloquea la ltima revisin. Normalmente, slo el usuario que haya
bloqueado el archivo RCS puede desbloquearlo; tambin lo puede
hacer root.
-U
Establece el bloqueo no estricto para las revisiones.
-n[nombre[:rev]
Asocia un nombe simblico con la versin cuyo nmero es rev. Si se
omite la versin, el nombre se asocia con la ltima revisin depositada.
Si existe otra versin con el mismo nombre, rcs emite un mensaje de
error.
-orango
Elimina (borra) del archivo RCS las revisiones estipuladas por rango.
Un rago puede consistir en un solo nmero de revisin o en dos
nmeros separados por un guin.
-s[estado[:rev]
Asigna el estado determinado por estado a la versin cuyo nmero es
rev. Si se omite la versin, el nombre se asocia con la ltima revisin
depositada. Puede usarse cualquier cadena de caracteres para
identificar el estado de las revisiones. Por lo general, se utilizan Exp
(experimental), Stab (stable) y Rel (release).
-t[archivo_de_texto]
Cambia el contenido del texto descriptivo por el contenido del archivo
archivo_de_texto. Si no se especifica un nombre de archivo, se solicita
el ingreso del texto en la entrada standard. El ingreso de texto se
concluye digitando [Ctrl-D] o un punto nico en una linea de texto
vaca.
-l[rev]

rlog: Muestra mensajes de log y otra informacin de archivos RCS


Formado del Comando:
rlog [opciones] archivo_RCS ...
Descripcin:
El comando rlog imprime por defecto la siguiente informacin sobre archivos RCS en
la salida standard:
-

Nombre del archivo RCS


Nombre del archivo de trabajo
Nmero de la ltima revisin
Lista de control de acceso

Captulo 11: Herramientas de Desarrollo

Pgina 136

UNIX
-

Lic. Ral N. Confalonieri

Bloqueos
Nombres simblicos
Sufijo del archivo RCS
Nmero total de revisiones
Nmero de revisiones seleccionadas para impresin
Texto descriptivo

Esta informacin es seguida por las entradas correspondientes a cada una de las
revisiones depositadas, en rden cronolgico para cada rama. Para cada revisin, se
imprime la siguiente informacin:
-

Nmero de revisin
Autor
Nombe y fecha
Estado
Nmero de lneas agregadas o borradas
Mensaje de log

Opciones:
-dfechas
-h

-l[usuario]

-rrevisiones
-R
-sestados
-h
-w[usuario]

Muestra informacin de las revisiones cuyas fechas y horas de


depsito estn contenidas en el rango de especificado por fechas.
Muestra el nombre del archivo RCS, el nombre del archivo de trabajo,
el nmero de la ltima revisin, la lista de control de acceso, los
bloqueos, los nombres simblicos y el total de revisiones
depositadas.
Muestra informacin de las revisiones bloqueadas. Si se especifica
un nombre de usuario (puede ser una lista separada por comas), se
muestran las revisiones bloqueadas por el mismo. Si se omite el
usuario, se muestran todas las revisiones bloqueadas.
Muestra informacin de las revisiones cuyos nmeros de revisin
estn contenidos en el rango de especificado por revisiones.
Muestra el nombre del archvo RCS solamente.
Muestra informacin de las revisiones cuyos estados estn
contenidos en el rango de especificado por estados.
Idntico a -h, con el agregado del texto descriptivo.
Muestra informacin sobre las revisiones depositadas por un usuario
(puede ser una lista separada por comas). Si se omite, se asume
por defecto el nombre del usuario que invoc el comando.

ident: Identifica archivos de trabajo


Formado del Comando:
rlog archivo_de_trabajo ...
Captulo 11: Herramientas de Desarrollo

Pgina 137

UNIX

Lic. Ral N. Confalonieri

Descripcin:
El comando ident busca en los archivos especificados la ocurrencia de cadenas de
caracteres del tipo $clave:...$, donde clave puede ser:
Author, Date, Header, Id, Locker, Log, Source, State
rcsdiff: Compara archivos RCS y/o de trabajo
Formado del Comando:
rcsdiff [opciones] [-rrev1] [-rrev2] archivo ...
Descripcin:
El comando rcsdiff compara versiones entre versiones depositadas en archivos RCS,
o entre ellas y archivos de trabajo. La salida del comando es muy similar a la de diff (en
realidad, hace una llamada a diff).
Si se especifican ambos nmeros de revisin depositadas en un archivo RCS, se hace
una compraracin entre ellas. Si se omite el segundo nmero de revisin, se compara
la revisin especificada con el archivo de trabajo. Si se omiten ambos nmeros de
revisin, se compara la ltima revisin depositada con el archivo de trabajo.
Opciones:
Las opciones son las mismas que las de el comando diff.
rcsmerge: Intercala versiones de archivos RCS y/o de trabajo
Formado del Comando:
rcsmerge -rrev1 [-rrev2] [-p] archivo ...
Descripcin:
El comando rcsmerge intercala las versiones especificadas de un archivo RCS. Si se
especifica la opcin -p, se muestra el resultado en la salida standard, de otra manera,
sobreescribe en el archivo de trabajo.
El primer nmero de revisin es obligatorio. Si se omite el segndo nmreo de revisin,
se asume por defecto el ltimo depositado.
En caso de conflictos, rcsmerge imprime una advertencia y delimita las secciones que
Captulo 11: Herramientas de Desarrollo

Pgina 138

UNIX

Lic. Ral N. Confalonieri

se superponen de la siguiente forma:


<<<<<<< x1.y1
lineas de la versin x1.y1
...
...
=======
lineas de la versin x2.y2
...
...
>>>>>>> x2.y2
Opciones:
-p

Imprime el resultado de la intercalacin en la salida standard, en


lugar de hacerlo sobre el archivo de trabajo.

Mini-Tutorial del Funcionamiento de RCS


Para el ejemplo, se utilizara un archivo imaginario prog.c, cuyo desarrollo se desea
controlar por medio de RCS. Los archivos bajo el control de RCS se llaman archivos
RCS y siempre llevan en nombre del archivo principal con un sufijo ,v. Los archivos
extraidos del mismo se llaman archivos de trabajo y el directorio donde residen, directorio de trabajo.
Lo primero que debe hacerse es crear un subdirectorio denominado RCS bajo el directorio de trabajo (esto se hace para evitar que los archivos de trabajo coexistan con los
archivos RCS). El directorio llamado RCS es llamado genricamente directorio RCS.
mkdir RCS
Si se desea crear el archivo RCS, se debe ejecutar el comando:
rcs -i prog.c
Este comando crea el archivo prog.c,v en el directorio RCS. El archivo prog.c,v
creado de esta manera est vaco (no contiene ninguna versin todava) y listo para
depositar versiones en l.
Para depositar una versin de prog.c (en este caso la primera) se debe invocar el
comando ci (check-in o depsito):
ci prog.c
Este comando almacena la version 1.1 de prog.c en el archivo prog.c,v (archivo
Captulo 11: Herramientas de Desarrollo

Pgina 139

UNIX

Lic. Ral N. Confalonieri

RCS) y borra prog.c (archivo de trabajo) del directorio de trabajo. Antes de ejecutar
estas tareas, solicita al usuario el ingreso de una descripcion, la cual deberia ser un
breve resumen del contenido del archivo o de la tarea que realiza si es un programa.
Debe la descripcin solicitada, terminada con un . (punto) en una lnea en blanco.
Todos los comandos ci posteriores solicitaran una descripcin de los cambios introducidos al archivo.
Para recuperar el archivo de trabajo de nuestro ejemplo, empleamos el comando co
(check-out o extraccin):
co prog.c
Esto genera en nuestro directorio de trabajo una copia del archivo f.c de solo lectura.
Esto es util en caso de que se desee compilarlo o listarlo. Si se desea modificar el
mismo, hay que bloquearlo para que otro usuario no pueda extraerlo para su edicion al
mismo tiempo:
co -l prog.c
Ahora es posible editar el archivo prog.c. Si, luego de su edicion se desea conocer
los cambios introducidos, se debe ejecutar el comando rcsdiff, que muestra la diferencia entre el archivo de trabajo editado y la ultima versin RCS.
rcsdiff prog.c
Para generar una nueva versin, se hace un check-in:
ci prog.c
Si ci envia un mensaje de error similar al siguiente:
ci: no lock set by <usuario>
es que se quiere hacer un depsito an cuando no fue bloqueado al extraerlo (con la
opcion -l). En este momento no se puede hacer un check-out con bloqueo, porque
sobreescribira la versin que hemos editado. En su lugar se debe hacer:
rcs -l prog.c
Este comando bloquea la ultima revisin (si es que otro programador no se le adelanto, en cuyo caso, deber negociar con el). El bloqueo asegura que nign otro usuario
pueda editar el mismo archivo. El bloqueo no evita que otro usuario haga un check-out
sin bloqueo para visualizarlo, compilarlo, etc.

Captulo 11: Herramientas de Desarrollo

Pgina 140

UNIX

Lic. Ral N. Confalonieri

Si se desea depositar una versin (p.ej. para dejar documentado un cambio) y luego
seguir trabajando ella, podemos utilizar el comando ci de la siguiente manea:
ci -l prog.c
La opcin -l del comando ci deposita una nueva versin del archivo de trabajo en el
archivo RCS e inmediatamente lo extrae con bloqueo, para que se pueda seguir editando (equivale a hacer ci prog.c y co -l prog.c en forma consecutiva).
Con el devenir de las modificaciones, se van generando las sucesivas versiones del
archivo de trabajo: 1.1, 1.2, ..., 1.20, etc. Vamos a suponer que la versin 1.20 es
operativa y est puesta a disposicin de los usuarios. Sin embargo, como debemos
seguir con su desarrollo, queremos cambiar el orden de numeracin para dejar reflejado que las versiones subsiguientes pertenecen a una nueva etapa en la construccin
del programa. En este caso, extraemos la ltima versin, la editamos y la depositamos
de la siguiente manera:
$ci -r2

prog.c

De esta forma, la nueva versin depositada es la 2.1, teniendo como antecesora la


versin 1.20.

Captulo 11: Herramientas de Desarrollo

Pgina 141

UNIX

Lic. Ral N. Confalonieri

CAPITULO 12:
4A@AI

Captulo 12: Redes

Pgina 142

UNIX

Lic. Ral N. Confalonieri

Redes
ping: Envio de requerimiento de eco
Descripcin:
El comando ping enva un requerimiento de eco a otro servidor para ver si se encuentra disponible para su conexin. Tamben puede enviarse un ping al servidor propio
para chequear el estado de la tarjeta de red.
Formato del Comando:
ping { direccion ip | servidor | localhost}
Ejemplo 1: Envo de un ping a una direccin ip (que no est disponible).
$ping 192.168.69.36
PING 192.168.69.36 (192.168.69.36): 56 data bytes
ping: sendto: Network is unreachable
ping: wrote 192.168.69.36 64 chars, ret=-1
ping: sendto: Network is unreachable
ping: wrote 192.168.69.36 64 chars, ret=-1
ping: sendto: Network is unreachable
ping: wrote 192.168.69.36 64 chars, ret=-1
ping: sendto: Network is unreachable
ping: wrote 192.168.69.36 64 chars, ret=-1
ping: sendto: Network is unreachable
ping: wrote 192.168.69.36 64 chars, ret=-1
192.168.69.36 ping statistics
5 packets transmitted, 0 packets received, 100% packet loss
Ejemplo 2: Envo de un ping al servidor propio para probar la configuracin de la red.
$ping localhost
PING 127.0.0.0 (127.0.0.0): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=255 time=0.2
64 bytes from 127.0.0.1: icmp_seq=1 ttl=255 time=0.1
64 bytes from 127.0.0.1: icmp_seq=2 ttl=255 time=0.1
64 bytes from 127.0.0.1: icmp_seq=3 ttl=255 time=0.1
64 bytes from 127.0.0.1: icmp_seq=4 ttl=255 time=0.1
127.0.0.0 ping statistics
5 packets transmitted, 5 packets received, 0% packet
round-trip min/avg/max = 0.1/0.1/0.2 ms

Captulo 12: Redes

ms
ms
ms
ms
ms
loss

Pgina 143

UNIX

Lic. Ral N. Confalonieri

telnet: Conexin a un host remoto


Descripcin:
El comando telnet es el interfaz de usuario del protocolo telnet; se emplea para establecer una conexin con un servidor remoto a fn de realizar una sesin de trabajo
remota. El cliente telnet puede residir en cualquier sistema que soporte la pila de protocolos TCP/IP. En UNIX se encuentra incorporado en forma nativa (tanto el cliente
como el servidor), ya que TCP/IP fu desarrollada sobre UNIX.
Esquema funcional de telnet:
COMANDOS
DE
USUARIO
SALIDA
DE
COMANDOS
CLIENTE
TELNET

SERVIDOR
TELNET

SISTEMA
OPERATIVO

SISTEMA
OPERATIVO

RED

Formato del comando:


a. En UNIX:
telnet [direccin IP | nombre de host]
b. En MS Windows:
Seleccionar Inicio => Ejecutar, digitar telnet. Clickeando el botn Aceptar obtenemos la siguiente pantalla:

Captulo 12: Redes

Pgina 144

UNIX

Lic. Ral N. Confalonieri

Para conectarnos con el host remoto empleamos el men Connect.


En cualquiera de los 2 casos vistos, una vez lograda la conexin, podremos comenzar
la sesin remota como en cualquier terminal UNIX.
ftp: Transferencia de archivos
Descripcin:
El comando ftp es el interfaz de usuario del protocolo ftp (File Transfer Protocol). Ejecuta la transferencia (copia) de archivos entre nuestro host (cliente) y un host (servidor) remoto.
Esquema funcional de ftp:

SISTEMA CLIENTE

CONEXION
DATOS
CLIENTE

TRANSF.
DE
DATOS

PROC.
DE
CONTROL

SISTEMA SERVIDOR

CONEXION
CONTROL
CLIENTE

CONEXION
CONTROL
SERVIDOR

SISTEMA OPERATIVO

PROC.
DE

TRANSF.
DE

CONTROL

DATOS

CONEXION
DATOS
SERVIDOR

SISTEMA OPERATIVO

RED

Captulo 12: Redes

Pgina 145

UNIX

Lic. Ral N. Confalonieri

Formato del comando:


ftp [direccin IP | nombre de host]
Comandos de ftp:
open
quit
bye
get
mget
put
mput
cd
ls

Establece la conexin con el servidor remoto (en caso de no haberse


estipulado la direccin ip o el nombe del host en la lnea de comando.
Cierra la conexion ftp y sale del comando.
Igual al anterior.
Toma un archivo desde el host remoto.
Toma mltiples archivos desde el host remoto.
Enva un archivos a un host remoto.
Enva mltiples archivos a un host remoto.
Cambia de directorio en el host remoto.
Lista archivos y directorios en el host remoto.

Adems del interfaz de caracter existente en UNIX y Windows (en modo MS_DOS),
existen una multitud de implementacines grficas que simplifican y agilizan la tara.
A modo de ejemplo, mostramos la pantalla de uno de ellos (WS-FTP95 para Windows
9x, NT y 2000). Tambin existen interfaces grficas para UNIX ejecutando X.

Captulo 12: Redes

Pgina 146

UNIX

Lic. Ral N. Confalonieri

mail: Mensajera electrnica


Esquema funcional de un cliente de mensajera electrnica:

MENSAJE
SALIENTE

I
N
T
E
R
F
A
Z
D
E

MENSAJE
ENTRANTE

U
S
U
A
R
I
O

BASE DE
DATOS
DE ALIAS

CLIENTE
SMTP
(CORREO
SALIENTE)

EXPANSION
DE ALIAS,
ENVIO
Y RECEPCION

SPOOL
DE CORREO
SALIENTE

CLIENTE
POP 3
IMAP 4
(CORREO
ENTRANTE)

CASILLAS
PARA
CORREO
ENTRANTE

CONEXION TCP
PARA CORREO
SALIENTE

CONEXION TCP
PARA CORREO
ENTRANTE

Esquema funcional de un servidor de mensajera electrnica:


Descripcin:

A otros servidores SMTP

De cliente SMTP

SERVIDOR SMTP
(MTA)
sendmail
De otros servidores SMTP

A cliente POP
SERVIDOR
POP

(MUA)
procmail

SERVIDOR
IMAP

Casilla de Correo

A cliente IMAP

Captulo 12: Redes

Pgina 147

Captulo 12: Redes

casilla de
correo

Usuario B

interfaz de usuario

envio y
recepcion

cliente
pop/imap

Cliente sin servidor SMTP


(p.ej. mquina Windows
c/Netscape o IE)

alias

spool de
correo

cliente
smtp

notificador

servidor
pop/imap

Servidor

Usuario A

lector de
correo

casilla de
correo

procmail

servidor
smtp

Usuario C

lector de
correo

Cliente con servidor SMTP


(p.ej. estacin de trabajo
Unix)

notificador

casilla de
correo

procmail

servidor
smtp

UNIX
Lic. Ral N. Confalonieri

Pgina 148

UNIX

Lic. Ral N. Confalonieri

El comando mail es el interfaz del sistema de mensajera electrnica de UNIX. Permite


al usuario enviar correspondencia a otros usuarios (en el host local o remoto) y leer la
que le es enviada por los mismos. En su forma ms sencilla (mensajera local), funciona con un programa llamado mailer daemon, que distribuye los mensajes dentro del
mbito del host. En su forma ms compleja (mensajera entre diferentes hosts), hace
uso de una estructura cuyo funcionamiento mostramos en los diagramas precedentes.
Usado sin argumentos, el comando mail muestra la correspondencia del usuario, mensaje por mensaje, en orden ltimo entrante - primero saliente.
Para cada mensaje, mail muestra un prompt ? y lee un comando de la entrada standard para decidir el destino del mensaje. Los comandos que procesan automticamente
el mensaje siguiente provocan la salida de mail si este se encuentra en el ltimo mensaje.
Formato del Comando:
mail [opciones][destinatario]
Opciones:
+ r

Invierte el orden de muestra de los mensajes.

Comandos:
+, n <ENTER>
d
s archivo
m usuario
q <CTRL-D>
x
!comando
? *

Captulo 12: Redes

Va al prximo mensaje.
Borra el mensaje y va al prximo.
Regresa al mensaje anterior.
Guarda el mensaje en archivo (el archivo por defecto es mbox),
lo marca para el borrado del buzn de mensajes y va al proximo.
Enva el mensaje a usuario, lo marca para el borrado y va al
prximo.
Pone los mensajes no borrados en el buzn y sale al shell.
Aborta. Deja el buzn intacto y sale al shell.
Sale temporariamente al shell y ejecuta un comando.
Imprime un resumen de comandos.

Pgina 149

UNIX

Lic. Ral N. Confalonieri

APENDICE A:

Compilacin del kernel Linux

Apndice A: Compilacin del kernel Linux

Pgina 150

UNIX

Lic. Ral N. Confalonieri

Compilacion del kernel linux


a. Cambiar a directorio de fuentes
cd /usr/src/linux
b. Ejecutar uno de los tres siguientes programas (generan el archivo de configuracin
del kernel)
H
H
H

make config
make menuconfig
make xconfig

(pantalla boba)
(terminal PC)
(terminal X)

c. Ejecutar los siguientes comandos


make
make
make
make

dep (genera el arbol de dependencias a partir del archivo de configuracin)


clean (borra todas los rastros de compilacin para evitar errores)
bzImage (efecta la compilacin y compresin del kernel)
modules (efecta la compilacin de los mdulos)

d. Instalar el kernel
1. Verificar el modelo de kernel instado
cat /etc/lilo.conf
2. Copiar el archivo zImage al directorio boot
cp /usr/src/linux/arch/i386/boot/zImage /boot/<nueva imagen>
3. Instalar los modulos
cd /lib/modules
mv 2.2.14-5.0 2.2.14-5.0-working
make modules install
d. Habilitar el kernel
1. Editar el archivo /etc/lilo.conf para agregar el nuevo kernel
2. Correr lilo.conf para que tome los cambios
3. Reiniciar el equipo

Apndice A: Compilacin del kernel Linux

Pgina 151

UNIX

Lic. Ral N. Confalonieri

APENDICE B:

Tipos de sistema de archivos en Linux

Apndice B: Tipos de sistema de archivos en Linux

Pgina 152

UNIX

Lic. Ral N. Confalonieri

Tipos de sistema de archivos en Linux


Tipo
minix

ext
ext2

msdos

umsdos

vfat

proc
iso9660
hpfs

sysv

nfs
smb

ncpfs

Descripcin
Utilizado en el sistema operativo minix y el primero en existir bajo Linux.
Tiene una serie de limitaciones, tales como particiones de 64 Mb.,
nombres de archivo cortos, una sola fecha en los inodos, etc.
Es una extensin elaborada del sistema de archivos minix. Actualmente est fuera de uso y se planea quitarlo del kernel.
Diseado como una extensin del anterior, ofrece la mejor performance (en trminos de velocidad y uso de CPU) de todos los sistemas de
archivos soportados por Linux.
Es el sistema de archivos utilizado por MS-DOS, Windows y las versiones antiguas de OS-2. Los nombres de archivo deben ser de la
forma 8.3, es decir, ocho caracteres para el nombre, un punto y tres
caracteres para la extensin.
Es una extensin del anterior implementada bajo Linux. Agrega capacidad de nombres largos, UID/GID, permisos POSIX y dispositivos
especiales, sin sacrificar compatibilidad.
Es una extensin del sistema MS-DOS implementada por Windows
95 y NT. Agrega la capacidad de nombres largos bajo el sistema de
archivos MS-DOS.
Es un pseudo sistema de archivos que se emplea como un interfaz
con las estructuras de datos del kernel. No ocupa espacio en disco.
Es un sistema de archivos en CD-ROM, compatible con el estndar
ISO 9660.
Es el Sistema de Archivos de Alta Performance (High Performance
File System) empleado por OS-2. Debido a la falta de documentacin
disponible, slo puede ser montado como read-only.
Es una implementacin del sistema de archivos System V/Coherent
para Linux. Implementa los sistemas de archivos para Xenix, System
V/386, y Coherent.
Es el sistema de archivos de red empleado para acceder a discos
instalados en computadoras remotas.
Es un sistema de archivos de red que soporta el protocolo SMB/CIFS,
utilizado por Windows para Grupos de Trabajo, 95, NT y Lan Manager.
Es un sistena de archivos de red que soporta el protocolo NCP, utilizado por Novell NetWare. Para utilizarlo, se necesitan programas especiales, los que pueden ser encontrados en:

Apndice B: Tipos de sistema de archivos en Linux

Pgina 153

UNIX

Lic. Ral N. Confalonieri

BIBLIOGRAFIA

Bibliografa

Pgina 154

UNIX

Lic. Ral N. Confalonieri

Bibliografa
The Design of the Unix Operating System
Maurice J. Bach
Prentice Hall International Editions
0-13-201757-1
El Entorno de Programacin Unix
Brian Kernighan - Rob Pike
Prentice Hall International
958-880-067-8
Unix Power Tools
Jerry Peek - Tim OReilly - Mike Loukides
OReilly
1-56592-260-3
Administracin de Sistemas Linux
M. Carling - Stephen Degler - James Dennis
Prentice Hall - New Riders
84-8322-174-8
Internetworking with TCP/IP - Vol. 1: Principles, Protocols and Architecture
Douglas Comer
Prentice Hall International Editions
0-13-474321-0
Computer Networks
Andrew S. Tanenbaum
Prentice Hall International Editions
0-13-166836-6

Bibliografa

Pgina 155

Das könnte Ihnen auch gefallen