Introducción a UNIX
El sistema operativo UNIX empezó a desarrollarse por universitarios estadounidenses en la década de los 70, escrito en lenguaje C. Desde sus orígenes ha sido dotado de una gran versatilidad y facilidad de utilización para el usuario, permitiéndole investigar y ampliar cómodamente el propio sistema, en detrimento de cierta seguridad.
Existe una gran variedad de versiones de UNIX para diferentes plataformas -tanto para ordenadores personales y estaciones de trabajo, como para servidores y miniordenadores-, tanto de libre distribución (Linux, Minix) como comerciales (Solaris, AIX, HP-UX). Aunque todas ellas mantienen una filosofía común, no son exactamente equivalentes. En la actualidad se está haciendo un gran esfuerzo de normalización en esta materia (normas UNIX'95 y UNIX'98 o los entornos Xwindow y CDE).
Los servidores del Centro de Cálculo de la Facultad de Informática y Estadística utilizan los siguientes dialectos de UNIX: Solaris, AIX y Linux.
Las características fundamentales de UNIX son:
Sistema operativo basado en capas.
El almacenamiento en disco se organiza en sistemas de archivos.
Los espacios de paginación permiten incrementar la memoria disponible (memoria virtual).
Trabaja con el protocolo de red TCP/IP.
Cada usuario tiene una cuenta cuyas características y permisos vienen definidos por el administrador (root).
El usuario se comunica con el sistema mediante el intérprete de mandatos.
Cada programa en ejecución consta de uno o más procesos, con identificador único y con una relación de parentesco.
Los comandos UNIX
Los mandatos UNIX suelen tener el mismo formato genérico:
mandato opciones argumentos
Las opciones de un mandato permiten modificar o calificar el comportamiento de dicho comando. Suelen ir precedidas por uno o dos signos menos (- o --).
Los argumentos son aquellos ficheros, directorios o elementos a los que se le aplicará dicho mandato.
Por ejemplo:
ls -al /usr
|
Mandato |
Opciones |
Argumentos |
|
ls: listar directorios |
-a: listar ocultos |
/usr: directorio /usr |
Para obtener una breve descripción de los mandatos más utilizados en los servidores del CdC, ejecutar el programa ayuda.
Para ver las páginas de manuales completas (en inglés) de cualquier comando UNIX, ejecutar man comando.
Los comandos más usuales
|
cat |
Muestra un fichero en pantalla. |
|
more |
Muestra el fichero por páginas. |
|
pg |
Muestra el fichero por páginas. |
|
cd |
Cambia de directorio. |
|
pwd |
Indica el directorio de trabajo actual. |
|
mkdir |
Crea un directorio. |
|
rmdir |
Borra un directorio vacío. |
|
cp |
Copia ficheros. |
|
rm |
Borra uno o más ficheros. |
|
mv |
Mueve o renombra ficheros o directorios. |
|
chmod |
Cambia permisos de ficheros o directorios. |
|
chgrp |
Cambia de grupo un fichero. |
|
df |
Informa del espacio del disco.(AIX) |
|
du |
Resumen del uso del disco. |
|
ls |
Lista el contenido de un directorio. |
|
comm |
Compara dos ficheros. |
|
find |
Busqueda de ficheros. |
|
grep |
Busca un patrón en un fichero. |
|
who |
Localiza quien está en el sistema. |
|
whoami |
Te identifica dentro del sistema. |
|
passwd |
Cambia la clave de acceso. |
|
hostname |
Muestra el nombre del sistema. |
|
ps |
Información completa de los procesos en ejecución. |
|
kill |
Elimina un proceso. |
|
logout |
Fin de sesión. |
|
clear |
Borra la pantalla. |
|
sort |
Ordena un fichero. |
|
ln |
Enlace simbólico. |
Colas de impresión
En los servidores UNIX existe la cola lp0 a la que se pueden enviar ficheros fuentes, mediante los comandos lp o lpr.
Los comandos que permiten gestionar los trabajos de impresión son:
|
lp |
Envía un trabajo a cola de impresión. |
|
lpr |
Envía un trabajo a cola de impresión. |
|
lpstat |
Muestra el estado actual de la cola. |
|
lpq |
Muestra el estado de la cola (en Solaris). |
|
lprm |
Borra el trabajo de la cola. |
Editores
El editor vi: Editor visual de pantalla completa usado en todas las distribuciones de UNIX. Tiene dos modos de ejecución: mandato y edición. La tecla [ESC] se usa para cambiar de un modo a otro.
El formato típico de ejecución es:
vi [-r] nombre_de_ fichero
La opción -r se utiliza para recuperar la edición de un fichero tras un error de ejecució en el editor. Nota: los corchetes indican que es opcional y no deben teclearse.
nombre_de_fichero es el camino al fichero que se va a editar.
La siguiente tabla muestra algunos de los comandos más usuales del editor vi.
|
a |
Añade texto detrás del cursor. |
|
i |
Inserta texto delante del cursor. |
|
o |
Inserta una línea debajo del cursor. |
|
x |
Borra un carácter. |
|
dw |
Borra una palabra. |
|
dd |
Borra la línea. |
|
u |
Deshace el cambio anterior. |
|
/patrón |
Busca el patrón (expresión regular) en el fichero editardo. |
|
:wq |
Guarda el fichero y acaba la sesión. |
|
:x |
Guarda el fichero y acaba la sesión. |
|
:w |
Graba cambios sin acabar la sesión. |
|
:q! |
:q! Acaba la sesión sin guardar cambios. |
El editor vi se puede personalizar guardando los valores en el fichero $HOME/.exrc ($HOME es una variable que apunta al directorio personal de la cuenta del usuario).
En los servidores del CdC se han instalado otros editores, requeridos para una óptima realización de las prácticas; tales como:
EMACS (emacs).
Joe's Own Editor (joe).
Ayuda
La siguiente tabla muestra los mandatos más usuales para obtener ayuda en UNIX.
|
man |
Muestra en pantalla las páginas del manual del comando solicitado. |
|
info |
Ayuda a base de menús. |
|
whatis |
Muestra una línea con la ayuda básica sobre el comando solicita. |
|
whereis |
Indica el camino completo en donde se encuentra el mandato especificado. |
Comunicaciones
SSH:
SSH es el protocolo utilizado para realizar conexiones seguras -codificando la información- a nodos remotos. El CdC recomienda usar conexiones SSH en vez de Telnet o de FTP no anónimo.
El formato típico de comunicación es:
En Unix:
ssh servidor (para conexión tipo Telnet)
sftp servidor (para conexión tipo FTP)
En Windows:
Ejecutar el programa SSH Secure Shell Client (para ambos tipos de conexiones)
Telnet:
Utilidad para la conexión a servidores remotos. El formato general del mandatos es:
telnet servidor [puerto]
Si no se especifica valor para el parámetro puerto, la conexión se realizará mediante el protocolo TELNET. Dicho protocolo permite al usuario comunicarse con el servidor como si estuviera sentado en su consola.
Una vez establecida la conexión, aparecerá en pantalla la carátula correspondiente al servidor y se solicitará el nombre de usuario y la clave correspondiente a la cuenta.
X Window:
X Window es el entrono gráfico para ordenadores basados en UNIX (normalizado por el Open Group). Dicho entorno de trabajo se halla instalado en los servidores de prácticas y en los PCs con Linux.
Los usuarios accederán a los servidores mediante el protocolo X Window de dos maneras distintas, dependiendo del sistema operativo de su PC cliente:
Desde Windows: ejecutando el programa X-Win.
Desde Linux: seguir la siguiente secuencia de operaciones.
1) xhost servidor
2) ssh servidor (o telnet servidor)
3) export DISPLAY=nombre_pc:0
FTP:
FTP es el protocolo utilizado para la transferencia de ficheros entre nodos. El formato del comando es:
ftp servidor
La siguiente tabla muestra los comandos más utilizados en este cliente básico para FTP (común a todas las versiones de UNIX):
|
open |
Abre la conexión al nodo. |
|
close |
Finaliza la sesión FTP sin salir del programa. |
|
bye |
Finaliza la sesión FTP y sale del programa. |
|
help |
Ayuda interactiva del ftp. |
|
get/mget |
Copia fichero/s del nodo remoto en la unidad local. |
|
put/mput |
Copia fichero/s locales en el nodo remoto. |
|
cd |
Cambio de directorio en el nodo remoto. |
|
lcd |
Cambio de directorio en la unidad local. |
|
dir |
Muestra el contenido del directorio remoto. |
En los PCs con Windows están instalados los programas SSH Secure File Transfer Client (para FTP seguro) y WS_FTP (para FTP normal), que permiten realizar todas estas operaciones más cómodamente a través de un entorno gráfico.
Los programas navegadores (Netscape, Explorer) permiten la descarga de ficheros desde servidores anónimos de FTP.
Normas de uso para los servidores Unix
Para usar un servidor, es necesario solicitar en la Sala de Control una "cuenta" (que será concedida en el servidor que le corresponda) donde el usuario tendrá su propio entorno de trabajo. Ver normas para la apertura de cuentas.
El usuario se hace responsable de su cuenta y deberá tener algunas nociones básicas del Sistema Operativo UNIX. Como información complementaria, se encuentra instalado el programa ayuda, una utilidad interactiva de fácil manejo.
La siguiente tabla presenta una breve descripción de los árboles de directorios de Galileo, Merlin y Murillo:
|
Murillo (prácticas de alumnos) |
PCs con Linux |
|
/ - directorio raiz. $HOME - cuenta del usuario, zona privada. |
/ - directorio raiz. |
Es imprescindible tener cuidado con la clave de acceso a la cuenta, para evitar la pérdida de autorización. Para ello damos unas sencillas reglas a tener en cuenta:
|
NO |
SI |
|
nombres o apellidos en general, |
combinaciones de palabras con carácteres no alfanuméricos. |
Se recomienda que el usuario no tenga en su cuenta información que supere la cuota de almacenamiento (actualmente 20 MB Murillo), para evitar la saturación del disco, así como programas públicos que se encuentren instalados en la máquina.
Hay que tener especial cuidado con la ejecución de programas recursivos; recordando que:
Siempre debe existir un "caso base" al que se llegue en algún momento de la ejecución.
Nunca ejecutar programas con recursión infinita o con bucles infinitos.
Si se prevé que un programa no interactivo tiene una ejecución larga o necesita consumir mucha C.P.U., debe lanzarse en segundo plano, y a ser posible de noche (nohup orden &).
No ejecutar en 2º plano programas interactivos. Ésta posibilidad sólo debe usarse en aquellos procesos que no necesitan intercambiar información con el usuario.
No mandar correo a un número amplio de usuarios, porque provoca la saturación de los directorios temporales. Para una comunicación masiva pueden usarse otros sistemas como las noticias (news).
Los programas ejecutables UNIX tienen 2 características que pueden resultar peligrosas, llamadas SUID y SGID. Esto permite al usuario que ejecuta el programa "convertirse" temporalmente en el usuario que creó el programa (SUID) o pertenecer momentaneamente al grupo de dicho programa (SGID).
No ejecutar programas con SUID que no pertenezcan al sistema operativo, porque permite que el usuario propietario del fichero "capture" al usuario que lo ejecuta.
Ejemplos
|
comando & |
Deja el proceso en 2º plano. |
|
nohup comando & |
Deja el proceso ejecutándose al cerrar la sesión. |
|
kill -KILL ident_proceso |
Termina la ejecución del proceso especificado. |
|
ps -fu $LOGNAME |
Muestra los procesos que está ejecutando el usuario. |
|
du -ks $HOME |
Indica el espacio almacenado en la cuenta (en KB). |
|
quota -v |
Muestra la cuota de disco usada por la cuenta del usuario. |
|
man comando |
|
Comentarios recientes
Hace 23 horas 59 mins
Hace 1 día 37 mins
Hace 1 día 5 horas
Hace 1 día 5 horas
Hace 1 día 5 horas
Hace 1 día 23 horas
Hace 1 día 23 horas
Hace 2 días 16 horas
Hace 2 días 16 horas
Hace 3 días 3 horas