Ingeniero Técnico en Informática de Sistemas
Unix
Aparece en1969 en los laboratorios Bell y lo desarrolló Ken Thompson.
Estaba escrito en ensamblador y era para un único usuario.
En 1971 reescribe UNÍX en lenguaje B y a la vez coincide en los laboratorios con Dennis Ritchie, creador del lenguaje C.
En 1973 vuelven a rescribir UNÍX en lenguaje C y lo denominan UNÍX 5.
En 1975 aparece la versión UNÍX 6 para entornos de investigación y educación. También en este año se conceden las primeras licencias de uso.
En 1977 aparece la versión UNÍX 7 la cual se prepara para la instalación en micros.
En 1981 aparece la versión UNÍX III, que es una actualización del UNÍX 7, e incluye utilidades para el mantenimiento de programas, incluyéndole librerías. Esta versión es plataforma de las versiones XENIX III y XENIX IV que eran versiones orientadas a Pc. Paralelamente a este desarrollo se desarrollaron los sistemas de redes y comunicaciones con lo que esto desapareció.
En 1983 aparece UNÍX V que posteriormente se llamaría UNÍX SYSTEM V, que es el UNÍX que se comercializa actualmente.
CARACTERÍSTICAS
-
Portátil: Es un sistema fácilmente adaptable a diferentes ordenadores de diferentes fabricantes.
-
Propósito general: Se puede aplicar a únicos y diferentes entornos de usuario.
-
Multitarea: Permite la ejecución simultánea de varias tareas a las que llama proceso.
-
Tiempo compartido: Asigna un periodo de tiempo máximo de ejecución en el procesador a cada proceso. Sólo trabaja uno en cada instante de tiempo.
-
Multiusuario: Permite la entrada de varios usuarios al sistema al mismo tiempo.
-
Interactivo: El usuario hará peticiones al sistema y varios a recibir información casi inmediata. No puede ser inmediata al usuario o volumen de usuarios.
-
Fácil modificación y almacenamiento: Se debe al uso del lenguaje C. Puedo modificar los fuentes. Usuario con privilegios para hacerlo.
-
Estructura de ficheros: Tiene una estructura jerárquica en forma de árbol. Esta estructura es la misma para ficheros del sistema y ficheros de usuario. (las carpetas aquí se llaman directorios). Todo usuario tiene su propio directorio de trabajo, son lo cual se puede hacer absolutamente todo (grabar, borrar, crear ficheros, ...). El administrador no le pone ningún límite, pero fuera de ese directorio de trabajo se encuentra con todas las limitaciones posibles. Se puede leer pero no escribir cualquier fichero o directorio del sistema.
-
Comunicaciones: Permite comunicación entre sistema UNÍX a UNÍX mediante utilidades aportadas por el propio sistema operativo.
-
Procesos Background: Consiste en pasar un proceso a estado suspendido preparado hasta que la CPU esté desocupada.
-
Facilidades para la automatización de procesos de oficina:
-
Correo electrónico: Tiene un correo electrónico. Mandan mensajes a usuarios que estén dados de alta en el sistema, o a sí mismos.
-
Noticiarios: Es a título general. Cualquier usuario que se conecte al sistema puede leerlo.
-
Comunicación interactiva entre terminales: Un chat a lo pobre (entre dos, por ejemplo).
ESTRUCTURA DEL SISTEMA OPERATIVO
Unix tiene una estructura de anillo envolvente de tres niveles (windows tiene 4). En el nivel más interno está el KERNEL, en el central la SHELL y en el externo las UTILIDADES. (No numera los anillos y los utiliza todos).
KERNEL
UTILIDADES
SHELL
KERNEL: También llamado núcleo del sistema operativo, gestiona los recursos del ordenador ocupándose de los discos, cintas magnéticas, terminales, impresoras, líneas de comunicación y cualquier otro dispositivo conectado. Sus funciones son:
-
Control de acceso a los dispositivos de almacenamiento.
-
Control de acceso a terminales y otros dispositivos.
-
Control de los procesos.
-
Administrar la memoria.
SHELL: Intermediario entre usuario y núcleo. Se encarga de interpretar los comandos tecleados por el usuario y ejecutarlos. Tipos:
-
BOURNE SHELL: Es la más estándar y la que utilizan la mayoría de los usuarios. Da acceso a todo el disco, a casi todos los comandos, ... Su prompt es $ aunque es configurable. También tiene un prompt especial que es # y está asignado al superusuario.
-
C SHELL: Es para usuarios encargados de la modificación y el mantenimiento del sistema. Los comandos son muy similares a los de lenguaje C. Tiene un prompt especial que es %.
-
VISUAL SHELL: Es exclusiva del sistema operativo orientada a entornos gráficos.
-
RESTRICTED SHELL: Restringe el uso de algunos comandos.
-
UUCP SHELL: Shell especial orientada a la transmisión de datos.
UTILIDADES: Tendremos en ellas:
-
Lenguajes (C, COBOL, BASIC,...).
-
Librerías del sistema (aportados por el sistema operativo).
-
Otras aplicaciones (programas que incluye el administrador dentro del sistema).
USUARIOS
Administrador: Es el encargado de mantener el funcionamiento eficiente del sistema. Sus funciones son:
-
Encender y apagar el sistema.
-
Instalar nuevos release (actualizaciones del sistema).
-
Instalación de software.
-
Configurar dispositivos y usuarios.
-
Optimizar el sistema.
-
Realizar copias de seguridad.
Superusuario: Es un usuario especial que tiene permitidos todos los accesos y puede realizar cualquier actividad.
Usuario: Aquel que puede entrar a trabajar en el sistema. Es el propietario o creador de un fichero o un directorio.
Grupo: Es el conjunto de usuarios que están dados de alta en el sistema con las mismas atribuciones, permisos y propiedades bajo un nombre común.
Resto: Son todos los usuarios que no pertenecen al grupo del propietario de un fichero.
PRINCIPALES DIRECTORIOS
-
ROOT: Directorio raíz, del que cuelgan el resto de los directorios y/o ficheros. Se va a representar con la barra normal /.
-
bin: Contiene herramientas y comandos del sistema.
-
dev: Contiene los driver o dispositivos periféricos conectados al sistema. Dentro, por cada dispositivo conectado al sistema tiene un fichero asociado.
-
etc: Contiene ficheros del sistema y configuración. Estos ficheros serán modificables, pero no se pueden borrar.
-
lib: Contiene la librería del sistema.
-
tmp: Almacena ficheros temporales creados por comandos del sistema.
-
home: Algunas veces puede contener los directorios asignados a cada usuario. Pueden estar aquí o en el usr (por decisión administrativa).
-
Usr: Normalmente, contiene los directorios asignados a cada usuario. Dentro podemos encontrar:
-
adm: Contiene ficheros de administración.
-
bin: Contiene herramientas y comandos del sistema. Es el mismo que el del directorio raíz (un directorio al que accedemos por dos sitios) y se llama enlace (directorio enlazado). Sirve para posibilitar la modificación de ficheros por más de un usuario (como si fuese un acceso directo en windows).
-
lib: Otro enlace como el bin.
-
spool: Contiene ficheros relacionados con la cola de impresión.
Cuando entro al sistema, éste siempre me posiciona en mi directorio de trabajo (directorio de conexión).
PERMISOS
Todo fichero y directorio dispone de tres permisos que indican las operaciones que se pueden realizar sobre ellos.
-
Lectura (r):
-
Si tengo permiso de lectura para un fichero éste nos permite leerlo.
-
Si tengo permiso de lectura para un directorio éste nos permite listar el contenido del directorio.
Si quito el permiso de lectura del directorio, no podré leer los ficheros |
-
Escritura (w):
-
Si tengo permiso de escritura para un fichero éste nos permite escribir sobre ese fichero.
-
Si tengo permiso de escritura para un directorio éste nos permite añadir y borrar ficheros y directorios.
¡¡OJO!! Si puedo escribir también puedo leer |
-
Ejecución (x):
-
Para un fichero, permite utilizar el nombre del fichero como si fuera un comando ejecutable (debe contener comandos ejecutables).
-
Para un directorio, permite posicionarme en el directorio, convirtiéndolo al directorio actual.
PERMISOS | FICHEROS | DIRECTORIOS |
Lectura (r) | Leer | Listar |
Escritura (w) | Escribir | Añadir/borrar |
Ejecución (x) | Ejecutar | Posicionar |
-
Cada fichero y directorio tienen 9 permisos: 3 para el usuario, 3 para el grupo y 3 para el resto.
-
Por defecto, se dan los permisos de lectura y escritura, para un fichero nuevo, al usuario y al grupo y al resto sólo de lectura.
-
Para un directorio le da los 3 permisos al usuario y al grupo, y al resto les da al de lectura y el de ejecución.
FORMATO GENERAL DE LOS COMANDOS
Siempre ejecutamos a partir del prompt $.
Un comando está compuesto, por regla general, de un nombre (indicativo a la Shell de lo que hace el comando), siempre, obligatoriamente, detrás del nombre irá un espacio en blanco. Detrás opciones (caracteres o números precedidos de un guión que modifican la ejecución de un comando). Detrás irá otro blanco y al final los argumentos (nombre de un fichero, nombre de un directorio, cadena, ... sobre los que actúa el comando).
En windows poníamos dir/p/s/w y ejecutaba las tres opciones. En Uníx -psw y ejecuta las tres opciones sin hacer falta los tres guiones |
Formato:
$nombre opciones argumentos |
-
Unix permite ejecutar más de un comando en la misma línea separados por punto y coma. Si uno falla ejecutará el aviso del error y entrará en el siguiente comando.
-
Si escribo un comando muy largo al final de la línea escribo / y ENTER y pasará a la siguiente línea poniendo al principio > (pone > porque indica que no se ha terminado la ejecución) y continuará con el comando.
-
clear: Borra pantalla.
-
banner (cadena): Visualiza la cadena en letras grandes.
-
cal: Visualiza un calendario perfectamente formateado, que puede oscilar entre el año 1 y el año 9999. Por defecto saca el mes actual. Admite dos argumentos; [mes][año]. Ej:. cal 12 2015 (mostrará el calendario del mes de diciembre del año 2015. Si utilizas un solo parámetro detrás de cal, visualizará el calendario de todo ese año.
-
date: Visualiza la fecha y la hora del sistema. El usuario sólo puede consultar (excepto para modificar su formato), siendo el administrador quien puede modificarla. Formato: date[+formato]. También admite literales, que deberán ir siempre entre comillas (simples o dobles, pero iguales a principio y fin). Ej:. date “+Hoy es: %D%nLa hora es:%T”.
-
echo (argumento): Visualiza el argumento en pantalla (si pones comillas no las visualizará). Si pones sólo echo, visualizarás una línea en blanco.
-
man: Es la ayuda (Manual). Si le ponemos un comando, visualizará toda la ayuda referente a ese comando de forma paginada. En la paginación nos indicará el porcentaje de información que vamos obteniendo. Con Enter ves la paginación línea a línea y con el espaciador página a página. Con el CTRL. + SUPR termina la paginación (¡¡OJO!!, esto también se puede lograr con el CTRL + D, pero si lo dejas pulsado o lo pulsas más de una vez se sale y finaliza la ejecución del programa). Toda la información de este comando viene en inglés.
-
ls: Equivalente al DIR de windows (visualiza el contenido de un directorio). Muestra la información encolumnada y ordenada alfabéticamente sin diferenciar los ficheros o los directorios (no salen paginados). Formato:
-
ls -F: Añade una barra al final del nombre de un directorio. A un fichero ejecutable o con permiso de ejecución le añade al final un *. Ej:. dire1/
-
ls -s: Muestra el nombre del fichero y su tamaño en bloques (bloque =512 bytes) (un fichero por norma tiene reservado 1K = 2 bloques).
-
ls -R: Visualiza de forma recursiva un directorio (su contenido). Ej:. ls -R/ (visualiza el disco entero).
-
ls -a: Visualiza incluyendo ficheros ocultos (aquel que empieza por punto). El más famoso es el .profile (existe en cada directorio de conexión de cada usuario). Es un fichero de configuración, que se lee cada vez que se entra en el sistema. En él puedo poner lo que quiera para cada vez que entre. ¡¡OJO!! Si se borra no puedes acceder al sistema.
-
ls -l: Visualiza la salida larga de un directorio, es decir:
-
mail: Correo electrónico del sistema (todo usuario por el hecho de estar dado de alta tiene uno asignado). Sólo se puede hacer con él dos cosas:
-
Enviar correo: $mail usuario . Cuando se pone eso, justo después se pone en modo edición y todo lo que escribo va al correo. Se finaliza la edición cuando en la última línea, al principio, ponga punto y pulse Enter (también puedo finalizar pulsando CTRL + D, pero es peligroso puesto que si pulso varias veces o lo dejo pulsado se finaliza la edición y me salgo del sistema).
-
Recibir correo: Si no estamos en el sistema cada vez que entremos nos avisará de que tenemos correo. Si pulsamos $mail + Enter nos mostrará el correo del siguiente modo:
-
Una cabecera (quién lo envía, a que hora,...)
-
Texto
-
? (El prompt del mail). Tengo varias opciones aquí:
-
Enter: Salta al siguiente mensaje
-
D: Borra el mensaje y muestra el siguiente.
-
-: Permite visualizar el mensaje anterior.
-
s [fichero]: Permite crear un fichero con el contenido del mail y borra el mensaje del mail. Envía la cabecera y el texto.
-
w [fichero]: Es igual que el anterior pero sólo guarda el texto.
-
q: Abandona el prompt del mail.
-
*: Muestra toda la lista de opciones.
-
passwd: Permite cambiar la contraseña.
-
sleep (tiempo): Produce un retardo (que espere un tiempo oscilable entre 1 segundo y 65536 segundos). Ej ls -l; sleep 5; ls -l/dev
-
who: Visualiza información sobre los usuarios conectados al sistema. Saca el login, el terminal y la fecha y hora de conexión. Ej:. i1tbx pts001 13mar 13:15
-
who -u: Añade 2 columnas, un punto y un número. El punto indica que el usuario está trabajando . Si pasa un minuto, el punto desaparece y aparece el tiempo de inactividad. El número es el asignado al proceso de la SHELL. Ej:. i1tbx pts001 13mar 13:15 . 7153
-
who -T: Añade entre el usuario y el terminal un más y un menos. El más indica que el terminal está abierto para la comunicación y el menos que está cerrado. Ej:. i1tbx + pts001 13mar 13:15 . 7153
-
who am I: Aparece ltoda la información referente a mi terminal.
-
write usuario [terminal]: Establece comunicación con otro usuario en otro terminal. A diferencia del mail sólo se puede enviar si el otro terminal está conectado. El funcionamiento de edición es igual que el del mail. Para terminar CTRL. +D y aparece <EOT> (En d Of Transmisión).
-
mesg -y/n: Cierra y abre el terminal (por defecto siempre está abierto).
-
Talk usuario [terminal]: Establece comunicación entre 2 usuarios (algo así como un chat). Con CTRL + SUPR rompe el comando y se sale.
-
Ordinarios: Aquel que contiene datos secuenciales (de datos, de la SHELL,...)
-
Directorios: Ficheros que contienen información sobre los ficheros que se encuentran a un nivel inferior dentro de él. A diferencia con los directorios de windows, en unix tienen tamaño.
-
Especiales: Están asociados con dispositivos. Se encuentran en el directorio /dev.
-
No tenemos límite en la longitud del nombre, aunque hay algún tipo de Unix que limita a 14 caracteres.
-
Los nombres no pueden tener blancos.
-
Los nombres pueden ser alfanuméricos (letras, números, letras y números) pero recordando que mayúsculas y minúsculas son significativas.
-
Como símbolos se admite el punto y el guión bajo, pero el punto no separa nombre de extensión como ocurre en windows. El punto puesto al principio nos indica que es un fichero oculto.
-
El nombre de un fichero no puede empezar por un símbolo, salvo el punto.
-
No utilizaremos símbolos del sistema ($,^,[ ],(),; ,@,#,<,>,*,?,|,!,...)
-
mv: Es el equivalente al move. Mueve o renombra ficheros y directorios. La diferencia con windows es que admite más de un argumento.
-
cp: Es exactamente igual al copy de windows.
-
rm: Borra ficheros.
-
mkdir [opciones][argumentos]: Crea directorios.
-
rmdir: Elimina directorios que tienen que estar vacíos y no puedo estar posicionado ni dentro ni encima de él.
-
cd [argumentos]: Sirve para posicionarnos, convirtiendo el directorio en actual.
-
pwd: Es el equivalente al cd de windows indicándolos la ruta completa del directorio actual.
-
Redireccionamientos: Un redireccionamiento consiste en modificar la entrada o salida estándar de un comando (entrada sería el texto que envíamos y salida, su muestra por pantalla). Existen varios tipos y son iguales para windows:
-
De entrada: Redirecciona la entrada estándar de un comando. Se representa con < y une un comando con un fichero.
-
De salida: Redirecciona la salida estándar de un comando. Se representa con > y une un comando con un fichero o dispositivo.
-
Doble de salida: >> y es igual al de salida excepto en el fichero destino, si existe en lugar de machacarlo, lo concatena.
-
De error: Es un redireccionamiento especial, redirecciona errores de ejecución. Se representa como 2> y une un comando con un fichero o dispositivo.
-
Doble error: 2>> se diferencia del de error en lo mismo que el de salida y el de doble salida.
-
Transferencias: Consisten en aprovechar la salida de un comando como la entrada del siguiente, por tanto, lo que une son comandos. Los une con |
-
ln: Genera enlaces. Se pone el nombre del fichero origen y el del fichero enlace. Si borro el primer fichero queda el segundo. Ej:. ln fich1 fich2
-
ln -s: Enlaza directorios. Ej:. ls -sdire1 dire2
-
ls -l: Muestra el enlace.
-
chmod: Permite modificar los permisos asignados a ficheros y directorios. Tiene dos formas de trabajo, por notación octal o por notación simbólica.
-
Octal: El primer número está relacionado con los permisos del usuario o propietario del fichero. El segundo con el grupo y el tercero con el resto. Si el permiso es 0 significa ausencia de permiso. Ej:. chmod 745 fich1
-
Simbólica: Formato:
$comando1;comando2;comando3 |
$ | Prompt primario |
> | Prompt secundario |
COMANDOS (UTILIDADES BÁSICAS)
Algunos ejemplos de opciones date: | |
date +%d | Día del mes |
date +%d/%m | Día del mes y mes |
date +%d/%m/%y | Día, mes, año (sólo dos dígitos) |
date +%D | mm/dd/yy (Fecha dos dígitos en inglés) |
date +%T | hh:mm:ss (Hora, minutos , segundos) |
date +%a | Pone los 3 primeros caracteres del día de la semana (lun, mar, mie,...) |
date +%j | Número que ocupa el día dentro del año |
date +%w | Número que ocupa el día dentro de la semana |
date +%r | Aparece am ó pm para las horas |
date +%n | Salto de línea |
ls [opciones] [argumentos] |
Ejemplo: ls/bin/usr
fich*
Total 3 permisos
- rw- r-- r-- 1 i1tbx primero 136 13mar 19:30 fich |
d rwx r-x r-x 2 i1tbx primero 96 13mar 19:30 dire1 |
Permisos
Tipo dato: - fichero ordinario / d fichero directorio.
Permisos: 3 lectura (r), 3 escritura (w), 3 ejecución (x) (siempre en el mismo orden).
Tamaño: En bytes.
Fecha/hora: de la creación o de la última modificación. Si pasa más de un año, quita la hora y pone el año.
1 fichero siempre tiene como mínimo un enlace (a él mismo). |
1 directorio siempre tiene como mínimo 2 enlaces (a él mismo y al directorio padre). |
También se puede recibir con $mail -p, lo que listará todos los correos del más reciente al más antiguo y con el $mail -r listará todos los correos del más antiguo al más reciente. |
Mi correo se encuentra en el directorio /var/mail
FICHEROS
El sistema distingue 3 tipos de ficheros:
Nunca puede haber nombres de ficheros iguales. El nombre de un fichero está compuesto por su ruta. Ej.: /home/primero/i1tb1/carta
NORMAS PARA NOMBRES DE FICHEROS Y DIRECTORIOS
COMANDO cat
Es el equivalente al type (visualiza el contenido de un fichero o ficheros). Se diferencia del type en que puede visualizar más de un fichero. Cuando visualiza más de uno los visualiza como un único bloque.
Ej.: cat fich1 fich2 fich3
Lee cualquier tipo de ficheros pero sólo entiende aquellos que tengan su equivalente ASCII (no identifica la Ñ).
cat>fichero me permite la creación de un fichero.
CARACTERES ESPECIALES
Unix los llama metacaracteres.
* Sustituye caracteres a partir de la posición en que se encuentra.
? Sustituye un carácter y en la posición en que se encuentre.
[valores] Sustituye un carácter, en la posición en que se encuentre admitiendo como válidos los valores de los corchetes.
Ej.: F[1234]* es como si pusiésemos F1*, F2*, F3*, F4*
Admite también rangos:
Ej:. FICH[0-9] rangos de 0 a 9.
[fich][FICH][a-f,A-F] rangos de a-f y de A-F
! Se utiliza en combinación con los corchetes y sirve para excluir caracteres.
Ej:. F[!1234]* Empieza por F y el 2º no puede ser 1,2,3 ó 4.
COMANDOS RELACIONADOS CON FICHEROS
Ej:. mv fich1 fich2 fich3
Ej:. mkdir uno dos uno/tres dos/cuatro
Mkdir -p dire1/dire2/dire3
uno dos
tres cuatro
rmdir -p: Elimina toda la ruta.
rm -r dire1: Elimina un directorio y su contenido.
cd .. Ojo hay que poner un blanco entre cd y ..
Si ponemos sólo cd nos posiciona en le directorio de conexión.
REDIRECCIONAMIENTOS Y TRANSFERENCIAS
Ej:. $mail i1tb1 < fichero (envío el contenido del fichero)
Ej:. $cat fich1 fich2 (los visualiza en un solo bloque)
$cat fich1 fich2 > fich3 (lo que salía por pantalla lo envía a un fichero. Si fich3 no existe lo crea y si existe machaca la información que contenía).
Ej:. $cat fich1 fich2 fich3 (en el que fich2 no existe, visualiza fich1, da el error de fich2 y visualiza fich3)
$cat fich1 fich2 fich3 2> fich.error (hace lo mismo sin indicar el error que produce fich2)
El problema que puede dar esta orden sería que si ejecuto una orden nunca sabré sei se ha producido el error ni cual ha podido ser.
Ej:. $cat fich | mail i1tb1 (la salida del fichero lo envío al mail igual que el de salida).
$banner hola | write i1tb1 (envía hola en letras grandes)
Todo aquello que sale por pantalla se puede paginar ($cat fich [1-9] | more) |
r | w | X | |
4 | 2 | 1 | |
0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 |
0 | 1 | 0 | 2 |
0 | 1 | 1 | 3 |
1 | 0 | 0 | 4 |
1 | 0 | 1 | 5 |
1 | 1 | 0 | 6 |
1 | 1 | 1 | 7 |
Siempre hay que poner los tres permisos. Si ponemos chmod 700 ../1tbx indicamos la ruta ya que damos permiso al usuario actual, yo, y se lo quito a los demás.
Chamod quienquepermisos Argumentos
¿a quien? ¿qué hacemos con los permisos? ¿qué permisos?
Usuario | u | Ponerlos | Quitarlos | Asignar | r |
Enviado por: | El remitente no desea revelar su nombre |
Idioma: | castellano |
País: | España |