Академический Документы
Профессиональный Документы
Культура Документы
HISTORIA
El S.O. Unix fu creado a finales de la dcada de los 60 sobre la base de varios
trabajos realizados conjuntamente por el MIT y Laboratorios BELL. Dichos trabajos
(proyecto MULTICS) iban encaminados a la creacin de un macrosistema de
computacin que diese servicio a mltiples usuarios. Si bien el proyecto fracas,
posiblemente por intentar abarcar demasiado contando con unos elementos
hardware limitados en sa poca, influy decisivamente sobre la evolucin de los
sistemas informticos posteriores.
KERNEL y SHELL
El sistema operativo se basa en un Kernel o ncleo
principal, que se encarga de la administracin de la
memoria RAM, entrada y salida a perifricos, y
administracin de procesos.
Tambin estn los programas y scripts, algo similar a lo que eran los archivos batch
en el DOS. Un archivo ejecutable solamente se diferencia en contar con un
encabezado interno que as lo define.
ACCESO AL SISTEMA
Para acceder al sistema hay que introducir una identidad de usuario o login, y una
clave secreta o password. El login de usuario es nico dentro de un sistema y tiene
asociado un nmero llamado identidad de usuario, es decir, no pueden existir 2
usuarios con el mismo login. Cuando se escribe el login, para acceder a un sistema,
este es visible en la pantalla, en cambio cuando se escribe el password no.
La clave de un usuario solo podr ser cambiada por el propio usuario, y dentro de
Tanto el login como la password pueden contener letras como nmeros algunos
caracteres de puntuacin, etc., y en ocasiones tienen limitado su tamao entre un
mnimo y un mximo (normalmente 6 como mnimo y 8 como mximo). En nuestro
caso es obligatorio que el password contenga al menos un carcter numrico.
Cada usuario tiene asignado un directorio de trabajo. Varios usuarios pueden tener
asignado el mismo directorio de trabajo, aunque no es lo comn.
Una vez comprobada la validez del acceso, el sistema ejecuta una serie de
acciones, detalladas en el profile general del sistema (/etc/profile por lo general), y
que son generales para todos los usuarios. Entre las acciones principales se pueden
destacar:
Una vez ejecutado el perfil general, podr ejecutarse el perfil (profile) particular de
cada usuario, con el cual se completar la definicin del entorno del usuario Entre
las acciones que se pueden encontrar en este archivo destacan:
VARIABLES DE ENTORNO
Las variables de entorno, como su nombre indica, pueden tener diferentes valores
para cada usuario, y permiten personalizar el entorno UNIX.
Por lo general, parece que por convenio, en UNIX las variables de entorno se
escriben en maysculas (no hay nada que impida que vayan en minsculas, salvo
evitar confusiones con comandos). Las llamadas a las variables de entorno se
realizan anteponiendo el signo "$" al nombre de la variable ($HOME, $PS1, etc.).
Las variables de entorno no pueden contener el carcter "$" ni espacios, salvo en el
valor, siempre y cuando este se presente entrecomillado.
En UNIX existen unas variables de entorno bsicas, que son necesarias para que el
usuario pueda trabajar adecuadamente. Adems, tanto el propio usuario como
algunos programas que este ejecute, pueden generar nuevas variables de entorno.
Podemos as distinguir entre variables de entorno generales y variables de entorno
particulares.
NOMBRE=valor
Y si se desea exportar esta variable, para que sea visible fuera del programa, habr
que hacer:
export NOMBRE
o
export NOMBRE=valor
echo $NOMBRE
EDITOR: Variable que almacena el editor que usar el usuario por defecto.
ENV: Variable que almacena el archivo en donde el usuario ha definido sus
aliases y funciones.
HOME: Variable que almacena el directorio del usuario, desde el que
arrancar la shell cuando entra en el sistema.
HOSTNAME: Variable que almacena el nombre de la mquina.
LOGNAME: Variable que almacena el nombre o login del usuario.
MAIL: Variable que almacena el archivo que contiene el correo de usuario.
COMANDOS
Un comando se puede considerar como un programa del sistema operativo que
realiza una accin determinada, es decir, que hace algo. Los comandos pueden
llevar opciones, argumentos o no, y en caso de llevarlas han de ir separadas por
espacios o tabuladores. UNIX, a diferencia de DOS, diferencia entre maysculas y
minsculas, y en donde por tanto habr que prestar especial cuidado a la hora de
introducir los comandos. Por lo general los comandos suelen escribirse en
minsculas.
Las opciones son modificadores del comando, que pueden hacer que solo presente
una informacin determinada o que la presente de una u otra forma. El prefijo
utilizado en UNIX para las opciones, generalmente, es el "-", aunque tambin se
pueden encontrar casos con "+". En DOS el prefijo usado para las opciones es "/".
No debe existir espacio entre el prefijo y la opcin. Un prefijo puede ser vlido para
varias opciones simultneamente.
Ejemplo:
Se pueden ejecutar varios comandos desde una misma lnea de comandos, para
ello habr que separarlos mediante el carcter punto y coma ";".
Para que la salida de un comando se pueda utilizar como entrada del siguiente
habr que utilizar lo que se denomina redirecciones, y merecen un tratamiento
diferente.
ALGUNOS COMANDOS
bs Calculadora.
cd Cambia de directorio.
cp Copia archivos.
date Muestra la fecha y hora del sistema. Solo root la puede modificar.
rm Borra un archivo.
uncompress,
Descomprime un archivo comprimido.
unpack
aliases.
COMILLAS Y MS COMILLAS
Uno de los mayores quebraderos de cabeza de muchos usuarios en UNIX es el
tema de las comillas, que significan y cuando se usan.
Por ejemplo:
A = 'cat prueba'
B = "cat prueba"
C = cat prueba
Al teclear:
echo $A
aparecer el mensaje:
cat prueba
echo $B
Pero al teclear:
echo $C
SISTEMAS DE ARCHIVOS
UNIX es un sistema operativo, al igual que DOS, en el que la organizacin de los
archivos es jerrquica, organizada en directorios, presentando una estructura en
forma de rbol, en donde los directorios son ramas y los archivos hojas. El directorio
raz (/) es el directorio principal, del que cuelgan subdirectorios, de los que a su vez
cuelgan otros directorios o subdirectorios, etc. En principio se puede suponer que no
En UNIX los archivos tienen permisos para el usuario, para el grupo del usuario y
para el resto de usuarios. Con esto se puede hacer que un archivo sea accesible
para un determinado usuario, o grupo de usuarios, que solo pueda modificarlo un
usuario, etc. Los permisos de un archivo se indican con 10 caracteres se asignan
con nmeros:
Al ejecutar el comando "ls -l" nos aparecer al principio de cada lnea una
informacin del tipo:
El primer carcter hace referencia al tipo de archivo. El primer grupo rwx hace
referencia al permiso del usuario propietario del archivo. El segundo grupo
corresponde al permiso de los usuarios que pertenecen al mismo grupo que el
propietario. El tercero pertenece al resto de usuarios. Root tiene acceso ilimitado a
todos los archivos, aunque no tengan activado ningn permiso. Si aparece la letra
indica que est permitido ese permiso, y si aparece un guin indica que est
prohibido.
- : archivo normal.
b : archivo controlador de dispositivo orientado a bloques.
c : archivo controlador de dispositivo orientado a caracteres.
d : directorio.
l : enlace simblico o link
chown fulanito[:grupo] hace que fulanito pase a ser el propietario de archivo. Se puede
archivo especificar tambin el grupo.
hace que el grupo users sea considerado como grupo del
chgrp users archivo
propietario
Los enlaces fsicos son una copia del archivo, pero cada modificacin que se
haga en un archivo se actualizar en el otro, el contenido del archivo no se
perder hasta que no se borren todos los enlaces. Los enlaces que se
generan con el comando ln, por defecto son fsicos.
Los enlaces simblicos, en realidad son accesos directos al archivo
(denominacin usada en Windows 9X), y si se borra el archivo queda el
enlace referido a un archivo inexistente. Para ello la opcin a utilizar con el
comando ln es -s.
PROCESOS
Un proceso es un programa en ejecucin.
Cdigo
Datos
Pila
Registro
Informacin general
Todo proceso, excepto el proceso raz (el que tiene pid 0), tiene un proceso padre,
que se puede definir como el proceso desde el cual se lanza el proceso hijo. Cuando
finaliza un proceso padre y los hijos no finalizan adecuadamente, estos quedan
activos, pero adoptando como padre al proceso raz (el de pid 0). Estos procesos se
denominan zombies.
Cada vez que se ejecuta un proceso no se retorna a la shell hasta que este no
finalice, salvo que el proceso se ejecute en segundo plano o background, lo cual se
realiza posponiendo el carcter "&" despus de la lnea de comando. En caso de
ejecutar procesos en background, es conveniente redirigir las salidas hacia alguna
variable de entorno o archivo con el fin de que la salida del comando no interfiera
con las acciones del usuario. El nmero de programas que se pueden lanzar en
background depender de los permisos del usuario, as como de los parmetros
configurados para cada UNIX. Cada vez que se lanza un comando en background el
sistema devuelve un nmero que indica el pid del proceso.
proceso &
Donde seal indica el mensaje a enviar al proceso (puede variar entre 1 y 15) y pid
es el identificador del proceso que devolvi el sistema cuando se lanz el proceso.
En UNIX existen unos procesos bastante peculiares, cada uno de los cuales se
encarga de una misin y que son los que permiten el perfecto funcionamiento del
sistema. Se trata de los demonios (daemon). Estos procesos a su vez pueden
arrancar otros procesos o demonios con tareas ms especficas.
Son procesos, que solo root puede matar o inicializar. Generalmente solo los
inicializar manualmente en caso de que se realice alguna modificacin en los
archivos de configuracin que lo exija, para que se vuelvan a leer los parmetros de
ejecucin, o en caso de algn problema.
Para visualizar los procesos activos en un sistema se puede utilizar el comando ps:
ps [opciones]
Ejemplos:
TUBERIAS Y REDIRECCIONES
En UNIX, al igual que en cualquier sistema operativo, existen 3 dispositivos de
entrada salida que son fundamentales:
Ejemplo:
Para fusionar la salida estndar y la salida de errores se puede hacer usando 2>&1.
EXPRESIONES REGULARES
En algunos comandos como grep, sed, awk se aceptan lo que se conoce como
Expresiones Regulares, que son una forma de describir cadenas de caracteres, y
que sirven para buscar o tratar patrones con caracteres variables (bsquedas y
sustituciones complejas).
Existen metacaracteres, que son caracteres que en una expresin regular son
interpretados por su significado especial, y no por los caracteres que normalmente
representan. Para utilizar el carcter que representan habr que anteponerles el
carcter Back Slash (\). Entre estos caracteres tenemos:
Por ejemplo:
grep [0-9] archivo Muestra todas las lneas de archivo que contengan algn
nmero.
sed `1,$ s/[a-z]/[A-Z]/g`
archivo Cambia todas las minsculas a maysculas de archivo.
VARIABLES ESPECIALES
En UNIX existen unas variables especiales que pueden resultar tiles para conocer
detalles sobre programas ejecutados, argumentos, etc.. Estas variables dependen
de la shell utilizada, en el caso de ksh podemos destacar:
SHELL SCRIPTS
Para realizar una shell script en condiciones, al igual que para realizar un programa
en cualquier lenguaje de programacin, es necesario tener claro lo que se quiere
obtener y de que situacin se parte. Es mejor perder un poco de tiempo en realizar
un desarrollo mental del programa que dedicarse a teclear y probar cosas, pues lo
ms seguro es que no se consiga el objetivo, y si se consigue la estructura del
programa no ser la adecuada.
Una de las ventajas que presentan los shell scripts es que pueden ser portadas de
una mquina UNIX a otra sin problemas, sin necesidad de retocar nada, salvo que
se utilicen llamadas a programas muy concretos especficos de una versin de
UNIX, mientras que los programas compilados (desarrollados en C, Pascal, etc.)
deben ser recompilados, pues el cdigo se generar en funcin del microprocesador
de cada mquina. Otra ventaja es la facilidad de lectura e interpretacin.
Se deben aadir comentarios con el fin de facilitar la lectura del programa. Los
comentarios se insertan anteponiendo el carcter "#" al comentario, que se
extender hasta el final de la lnea.
Los scripts suelen encabezarse con comentarios que indican el nombre de archivo y
lo que hace el script. Se colocan comentarios de documentacin en diferentes partes
del script para mejorar la comprensin y facilitar el mantenimiento. Un caso especial
es el uso de "#" en la primera lnea, seguido del carcter admiracin y el path de la
subshell, para indicar el intrprete (Shell) con que se ejecutar el script:
#!/bin/ksh
EDITOR VI
El editor vi es el editor por excelencia de UNIX. Es bastante potente y complicado de
manejar a pleno rendimiento, debido a la gran cantidad de opciones que tiene, pero
vi [opciones] archivo
MODO TEXTO
Otros
MODO COMANDO
Bsqueda
Otros
U Deshacer todos los cambios en una lnea desde que se posicion el cursor
en ella.
. Repetir el ltimo comando.
Generales
Mover
:1 Mueve a lnea 1.
:15 Mueve a lnea 15.
:$ Mueve a ltima lnea.
Nota: Existen otros editores Windows que trabajan a pantalla completa, como por
ejemplo el caso del editor Utraedit, del que solamente poseemos una versin demo
por 45 das por el momento. Vea el sitio de internet http://www.utraedit.com para
obtener la misma.
Este editor soluciona incluso el tema de los formatos de archivo DOS que tienen dos
separadores de fin de lnea (Hex. 0D0A), mientras que Unix solamente usa un
caracter (hex. 0A).
Si lo viera con un editor Windows solamente, vera una sla lnea larga sin
renglones. A su vez, el Unix puede producir errores cuando intente ejecutar un
archivo con separadores DOS.
2) Emulacin de terminal
asincrnica: Para arrancarlo, en
esa carpeta haga doble clic sobre
el acceso directo a Putty,
programa emulador de
terminales asincrnicas. Ingrese
su usuario Windows y la primera
vez le pedir una nueva
contrasea. El usuario debe
tener por lo menos 6 caracteres.
Si son cinco agregue el nmero uno. Puede usarse la misma contrasea de
Windows u otra distinta. Por problemas o nuevos logins, consultar Soporte Tcnico.
2) Creamos un archivo con tres lneas que tengan errores haciendo lo siguiente:
Cat > prueba
Linea unos aaaaa
Linea dois bbbbb
Linea treis cccc
CTRL + D # para terminar con Cat
4) Queremos cambiar uno, dos y tres que estn mal escritos. Emitimos comando:
vi prueba
11) Listamos el contenido con less prueba y verificamos cambios. Para salir Q.
Lo que tendra que hacer este archivo es mostrar UNO por pantalla, esperar
10 segundos, mostrar DOS por pantalla, esperar otros diez segundos, y mostrar
FINAL por pantalla.
10) Para darle permiso de ejecucin al archivo ingresamos: chmod u+x PASITO
11) Ahora vemos si tiene permiso con ls l
15) Si queremos ver los trabajos que tenemos detenidos ingresamos jobs
17) Tambin se puede emitir el comando jobs con el modificador -l que muestra los
nmeros de identificadores de proceso (process group id).
18) Como se ve, hay tres trabajos detenidos (stopped). Podemos liberarlos y que se
ejecuten en primer plano (Foreground) tomando nuestro teclado o podemos
liberarlos y que se ejecuten en segundo plano (sin retener teclado) en Background.
Supongamos querer liberar el segundo trabajo. Los comandos sera fg %2 o bg
%2. Recordar que % va siempre seguido del nmero de trabajo (job).
20) Tambin podemos usar el comando kill, que lo detiene y libera la memoria. Tiene
dos formas: una amigable y otra no amigable o incondicional. kill -15 pid es la
forma amigable. El programa decide si se detiene o no, y debe estar programado
pensando en interceptar dicha llamada. Por default (kill slo) es amigable. En
nuestro caso, para liberar amigablemente el trabajo (job) 3 que tiene un pid 2046 el
comando sera kill -15 2046 o tambin kill 2046 o tambin kill %3.
21) Un terminacin forzada o incondicional sera kill -9 2028 o tambin kill -9 %1. All
no hay ninguna alternativa, aunque el script se encuentre detenido.
7) Para verificar que se cargaron los valores, emitimos los comandos echo
$SYS006 y echo $SYS007 para ver contenido de las ahora variables de entorno.
cat $SYS006 va a mostrar por terminal el contenido del archivo de datos.
EJERCICIO 5 - awk
Vamos a tratar de entender lo que hace el comando awk. Partimos de la base que
cat CPTOS.chico muestra nuestro archivo de datos. El awk toma los datos que le
dej el comando anterior, y los filtra en funcin de una condicin.
mfsort sort fields "("17,11,CH,A")" USE CPTOS.chico record f,61 ORG LS GIVE
CPTOS.sort
SYS007=CPTOS.chico
SYS008=CPTOS.sort
Export SYS007 SYS008
mfsort sort fields "("17,11,CH,A")" USE $SYS007 record f,61 ORG LS GIVE
$SYS008
mfsort[*][CHAREBCDIC][SIGNEBCDIC]{SORT|MERGE}
fields(instructions,...)[recorddefinition]
{USEinputfile}...
{GIVEoutputfile}...
donde fieldses({start,length,type,order},...)
start es posicin de comienzo desde 1, length es longitud del campo en byte, type es
el tipo de dato en el campo (vea la seccin Field Types), order es ordenamiento de la
salida, que puede ser A ascending D descending
SYSOUT=salidasort.txt
Export SYSOUT
5) Todos los sort de UNIX tiene siempre dos archivos: stdin que normalmente es el
teclado y stdout que normalmente es la pantalla. Para cambiar y que vuelva a salir
por pantalla, hacemos lo siguiente:
SYSOUT=stdout
Export SYSOUT
awk '{prefijo=substr($0,17,2);
if (prefijo==27) print $0}' CPTOS.chico >salida.femenino
EJERCICIO 7 - Ejemplo de tuberas (pipes)
1) Ingresamos el comando awk '{print $2}' y ejecutando, vemos que lo que hace es
imprimir la segunda cifra ingresada. Si ingresamos 400 500 600 y enter lista 500
Si ingresamos 500 600 700 y enter lista 600 y as hasta que demos CTRL + C.
2) Ahora probamos awk '{print $1}' y probamos que ahora imprime la primera cifra
ingresada.
3) El comando awk '{print $0}' repite toda la lnea en la salida.
5) Otro ejemplo sera ls | sort f | less para ver archivos ordenados alfabticamente
2) Examinamos el contenido de ambos archivos. Vemos el pipe << que toma desde
el teclado o stdin. Dentro del script miramos la parte que dice
SYS006=
cobrun prog-cptos <<fin-de-t
tarjeta de control linea 1
tarjeta de control linea n
Si deseamos las tarjetas de control fuera del script (en un archivo), el comando a
emitir sera cobrun prog-cptos < tarjeta-3490PS01
Sentencia if
Las siguientes lneas tienen por fin colocar al final de un script un grupo de
sentencias que nos digan si el script termin bien o mal.
err=$?
if [ $err != 0 ] ; then
echo " Ha ocurrido un error "
exit $err
fi # fin del if
echo " Terminacion normal"
3) Introduzca un error en el archivo. Por ej. agregue una lnea que no sea comando.
Vuelva a ejecutar y vea si hay mensaje de error.
Ejercicio 10 - Rebuild
El Rebuild sirve para indexar o reindexar un archivo. El parmetro k indica dnde
est la clave del ndice. La d minscula es para que acepte duplicados. Sintaxis:
2) Si se le pone t:MF8 c:d1i15 usa el tipo Microfocus 8 que admite (c) compresin
de los datos y de los ndices. Queda todo en un nico archivo comprimido que
contiene datos e ndices. El parmetro t explicita el formato.
All est una copia de este apuntes, y carios manuales en formato PDF sobre el
tema.
8) Para mostrar todos los archivos (y sus propiedades) cuya primera letra sea minscula uso:
a) ls l [A-Z]* b) ls l [a-z]*
c)ls l [!A-Z]* d) ls l [!a,e,i,o,u]
12) Partiendo de un archivo de nombre ENTRADA quiero obtener uno SALIDA, que
contenga aquellas lneas con un valor 33 en las posiciones 20 y 21. Diga como:
13) Emita comando para ver usuarios en este equipo y sus direcciones de IP