La ventana presenta los principales comandos utilizados en UNIX, problemas y mensajes de error encontrados durante su utilización.
Consulte
también:
Soporte al SPRING
Acerca las interfaces
Instalación del SPRING
Configuraciones del SPRING
Copias de respaldo - backups
Un computador esta conformado por dos partes, el "hardware" y el "software". El hardware representa el equipo físico: monitor, teclado, discos, procesador, memoria y otros dispositivos. El software representa el conjunto de programas que el hardware ejecuta con un fin determinado.
El software de un computador puede ser de dos tipos:
El sistema operativo es un programa fundamental, debido a que él
controla todos
los recursos del computador y da la base sobre la cual los programas de
aplicación pueden ser ejecutados. El sistema operativo es una capa de
software
colocada arriba del hardware de manera de ocultar las complejidades
inherentes
a este mismo hardware, como se observa en la figura siguiente.
Las principales tareas de un sistema operativo son:
Estas tareas son realizadas a través de un conjunto de instrucciones provistas por el sistema operativo. Estas instrucciones son llamadas "system calls" (llamadas al sistema) las cuales son responsables de la interfaz con el programa del usuario y forman lo que es conocido como el "kernel" del sistema operativo.
Un sistema operativo como el UNIX es el responsable de la implementación de las llamadas al sistema. Los editores, compiladores, assemblers, linkers e interpretadores de comando no son parte del sistema operativo. El intérprete de comandos denominado shell, si bien no es parte del sistema operativo, utiliza con mucha frecuencia sus características y sirve como un buen ejemplo de como las llamadas del sistema pueden ser usadas. El shell es la interfaz principal entre un usuario en el terminal y el sistema operativo.
El shell es el primer programa a ser ejecutado cuando se hace el login (ingreso en el sistema).
Existen varios shells del UNIX, los más populares están en dos grupos: el Bourne Shell (o Korn) y el C Shell.
Para saber que tipo de shell se está usando, observe si el UNIX exhibe una señal de $ después de hecho el login, en este caso se estará usando el Bourne Shell; si el UNIX exhibe una señal de %, entonces se estará usando el C Shell. Tradicionalmente el System V usa el Bourne Shell (ejecutable de nombre "sh") y el BSD usa el C Shell (ejecutable de nombre "csh").
Los shells normalmente usan caracteres especiales para evitar la escritura de comandos largos.
ej: !! significa repetir el último comando digitado (sólo funciona en el C Shell)
! c significa repetir el último comando iniciado por el carácter "c"
Descendientes del BSQ (Berkeley Software Distribution)
Existen varias versiones del UNIX. Predominan cuatro, de las cuales las principales son BSD y System V.
1- Berkeley Software
Distribution
(BSD)
Esta versión del UNIX fue desarrollada por la Universidad de Berkeley, siendo la primera que presentó la versión comercial 4.2 en 1982/1983 para el soporte de los protocolos de red Internet (TCP/IP). Fue lanzada también en 1986 la versión 4.3. El SunOS es derivado de estas versiones 4.x.
2- AT&T UNIX System V
Varias facilidades de comunicación entre procesos fueron dadas por el System V: mensaje queues, semáforos y memoria compartida. Las versiones del System V son las siguientes:
* Para SUN que utiliza Solaris 1.0 el UNIX es del tipo BSD y en Solaris 2.0 es SVR4
3- Microsoft Xenix, System V
Xenix es similar al AT&T System
V Release 2.0. El Sistema Xenix fue llevado para varios
ambientes de
hardware, usualmente corriendo en CPUs INTEL 286 y 386 (computadores
compatibles con IBM-PC).
La mayor distribuidora del Xenix es Santa Cruz Organization (SCO),
asociada a
Microsoft. Es un sistema obsoleto, sin embargo ocupa mucho menos
espacio de
disco y es más rápido.
4- OSF/1
Open Software Foundation produjo otro tipo de UNIX: OSF/1. Se basa en el BSD, pero con características del System V. Es suministrado principalmente por Digital Equipment Corporation.
5- Linux
Sistema operacional libre inicialmente desarrollado por Linus Torvalds. Actualmente tiene varias distribuciones del sistema, para diversas plataformas, desde mainframes hasta un reloj de pulso, pasando por varias arquitecturas: Intel , StrongARM , PowerPC , Alpha etc., con gran penetración también en dispositivos embarcados , como handheld , PVR, vídeo-juegos y centrales de entretenimiento etc.
Una de las grandes razones del uso del UNIX es la capacidad de utilización en redes. Otros sistemas operativos necesitan de un software adicional. En el UNIX esta capacidad es parte del sistema operativo y es ideal para e-mail, www y conexión con la Internet.
UNIX fue basado en la filosofía "small is good" en el proyecto de un sistema. La idea de que cada programa ejecute bien una única tarea. Así el UNIX es un sistema operativo flexible y de fácil adaptación a las necesidades específicas.
El sistema operativo UNIX fue escrito en un lenguaje (C) independiente del código de máquina. Así el UNIX fue llevado a una gran variedad de plataformas, debido a su característica de sistema operativo abierto.
Todo usuario de UNIX tiene un nombre de usuario y una contraseña. El administrador del sistema le da un nombre de usuario y una contraseña.
UNIX siempre considera como letras diferentes las letras en mayúsculas y en minúsculas, para cualquier comando, nombre de archivo o nombre de usuario, por lo tanto, escriba su nombre en el "login" exactamente como fue creado.
Los nombres de usuarios del UNIX, casi siempre son escritos en minúsculas.
Si hay algún error en la escritura del nombre, es posible usar las teclas Backspace (Retroceso) o Delete (Borrar) para corregir el carácter equivocado, o utilizar la tecla @ o Crtl-U para deshacer todo lo escrito.
En caso que no se acuerde de la contraseña, solamente el administrador
del
sistema (root) podrá darle otra para que entre en el sistema. El
nombre
de la contraseña no tiene límite de caracteres, pero casi siempre sólo
importan
los ocho primeros.
ejemplo: cosmus login: curso1
Password: _______
Se
puede ser cambiar la contraseña siempre que se haga el login usando el
programa
"passwd". El programa solicita que se coloque la
antigua contraseña para comprobar que es la misma persona que hizo el
login.
Luego, se debe escribir 2 veces la misma contraseña para estar seguro
que se la
escribió correctamente.
ejemplo: cosmus - /home/usuario/mario>passwd
Old passwd: xxxxxx
New passwd: ________
Retype new passwd: _______
Hacer
un logout significa cerrar una sesión de trabajo. Utilice el comando "logout"
o "exit".
ej: cosmus - /home/usuario/mario>logout
El archivo es la unidad básica de un sistema operativo. Los archivos en UNIX pueden ser de los siguientes tipos:
El directorio es un archivo que contiene otros archivos. Un directorio puede contener otros directorios.
ejemplo: /usr/games/chess
- games contiene al archivo chess y es hijo de usr
- el directorio usr contiene al subdirectorio games y es su padre
Todo sistema operativo UNIX es organizado en una serie de sistema de archivos jerárquicos. El sistema de archivo root es el que está localizado en lo alto de la jerarquía del árbol de sistema de archivos. Normalmente se tienen los siguientes archivos y directorios.
/bin /dev /etc /tmp /usr
/boot /export /home /mnt /var
En donde:
Todo lo que se hace en UNIX depende de los permisos dados a los archivos. El concepto de permisos de archivos determina quiénes son los usuarios que pueden manipular un determinado archivo o directorio. Los siguientes permisos están asociados con un archivo y directorio:
a) Permiso de lectura (r):
b) Permiso de escritura (w):
c) Permiso de ejecución (x) (solamente para archivos)
d) Permisos de "search" (directorio solamente)
Los permisos de archivos son presentados cuando se utiliza el comando "ls -l" y son presentados como muestra el ejemplo a continuación.
ej: drwxr-xr-x 2 mario users 1024 Oct 14 18:33 archivo1
En donde:
drwxr-xr-x
= permisos para usuario (dueño del archivo o directorio), grupo y mundo
respectivamente.
2 = número de links del archivo.
mario = nombre del usuario (propietario) que creó el archivo.
users = nombre del grupo al cual pertenece el archivo.
1024 = tamaño del archivo en bytes.
Oct 14 18:33 = mes, día y hora de creación del archivo.
archivo1 = nombre del archivo.
Vea como cambiar los permisos de archivos más adelante.
cd
Muchas veces para manipular un archivo es necesario estar en el directorio en donde él está localizado. El comando "cd" (change directory) permite desplazarse de un directorio hacia otro.
cd <directorio>
ejemplo:
cd datos = cambia al directorio "datos" a partir del actual
cd .. = se mueve un directorio hacia arriba
cd = retorna al directorio de login (home directory)
cd /home/usuario/jose = cambia al directorio absoluto (a partir de la raíz)
NOTA: El directorio home (directorio actual, cuando se inicia una sesión de trabajo) puede ser abreviado con el carácter (~) , y (..) Hace referencia siempre a un directorio superior del cual se está.
ejemplo:
~/file = se refiere a un archivo en el directorio home.
~user = se refiere al directorio home de otro usuario.
~user/file = se refiere a un archivo localizado en el directorio home del usuario.
pwd
El comando "pwd" (print working directory) informa donde se está dentro de la jerarquía de los sistemas de archivos.
mkdir
El comando "mkdir" crea un directorio a partir del directorio actual.
mkdir <directorio>
rmdir
El comando "rmdir" borra directorios existentes. Un directorio debe estar vacío antes de borrarlo, o sea, no debe contener archivos ni otros directorios.
rmdir <directorio>
ejemplo:
rmdir datos = borra el directorio datos vacío.
rmdir -r datos = borra el directorio datos y su contenido en el caso que exista.
rmdir -i datos = pide la confirmación antes de borrar.
ls
El comando "ls" lista cuales son los archivos y directorios que están en un determinado directorio.
ejemplo:
ls = muestra el contenido del directorio actual.
ls datos = muestra el contenido del directorio indicado.
ls -a = muestra los archivos que se inician con un punto (.), los
cuales son archivos ocultos.
ls -l = muestra la información completa de los archivos del directorio actual.
ls - F = presenta qué tipo de archivos están en el directorio (directorios, ejecutables, archivos simples o links simbólicos).
NOTA: UNIX permite trabajar con más de un archivo a la vez, a través de los caracteres (*) y (?). (*) representa cualquier número de caracteres en el nombre del archivo. (?) Representa un único carácter en el nombre del archivo.
more
El comando "more" muestra el contenido de un archivo, una página por vez, basta con pulsar la tecla Space para continuar viendo el resto del contenido del archivo.
more <archivo>
cat
El comando "cat" muestra el contenido de un archivo, pero no del modo página a página. Sirve también para concatenar (agrupar) archivos.
cat <archivo>
ejemplo:
cat arch1 = muestra el contenido del archivo arch1.
cat arch1 arch2 arch3 > arch123 = concatena archivos arch1, arch2 y arch3 en el archivo arch123.
cat arch1 >> arch2 = agrega el contenido de arch1 al final de arch2.
cp
El comando "cp" copia archivos de un lugar hacia otro en la misma máquina o entre máquinas diferentes en el caso que el sistema identifique otro disco en otra máquina.
cp <arch fuente> <arch destino>
ejemplo:
cp arch1 arch2 = copia archivo arch1 hacia arch2, substituyendo el contenido
del arch2 en el caso que este ya exista.
cp -i arch1 arch2 = copia archivo arch1 hacia arch2, pero será pedida la confirmación para crear nuevamente el arch2 en el caso que este ya exista.
cp arch1 datos = copia archivo arch1 hacia el directorio datos.
cp -r datos archivos = copia el directorio datos entero y sus subdirectorios hacia el directorio archivos.
cp /usr/games/chess . = copia archivo del camino indicado hacia el directorio actual.
rcp
El comando "rcp" permite la copia de archivos o directorios entre máquinas diferentes.
ejemplo:
rcp apolo:/home/usuario/arch1 . = copia archivo arch1 de otra máquina hacia
la que se está, con el mismo nombre en el directorio actual.
rcp arch1 mercury:/home/usuario/ = copia archivo arch1 hacia otra máquina.
mv
El comando "mv" sirve para mover archivos de un lugar para otro o renombrar un archivo. Si no se usa el parámetro (-i) será substituido el contenido del archivo destino en el caso que este exista.
mv <archivo fuente> <archivo destino>
ejemplo:
mv -i texto1 documento1.txt = renombra archivo texto1 en documento1.txt
pidiendo la confirmación en el caso que el archivo destino ya exista.
mv ~mario/datos/documento1.txt . = copia archivo documento1.txt a partir del
camino indicado para el directorio actual.
rm
El comando "rm" borra los archivos o directorios. Se recomienda siempre usar el parámetro (-i) para no borrar otros archivos accidentalmente.
rm <archivo>
ejemplo:
rm -i texto1 = borra archivo text1 pidiendo su confirmación.
rm test* = borra todos los archivos que comienzan con test sin pedir confirmación.
rm -r datos = borra directorio datos y todo su contenido.
Existen varias formas de crear archivos como ser:
Cuando se desea crear un archivo texto que no es muy grande, el comando "cat" puede ser bastante útil y simple. La sintaxis es
cat > archivo
en donde: archivo será creado después de escribir el comando y después de escribir el contenido use las teclas Ctrl+D para cerrar el archivo.
chmod
El comando "chmod" permite el cambio de permisos de archivos. Se puede utilizar el modo simbólico o numérico para alterar los permisos.
Modo
simbólico.
chmod who op permiso <archivo>
en donde: who
u = da permisos para el propietario (usuario);
g = da permisos para el grupo
o = da permisos para el mundo (demás usuarios);
a = da permisos para el usuario, grupo y mundo al mismo tiempo.
en donde: op
+ = dar permiso
- = quitar permiso
y en donde: permiso
r = permiso para lectura
w = permiso para escritura
x = permiso para ejecución
ejemplo:
-rw-r--r-- mario users 845 Oct 14 12:40 texto.txt
después el comando: chmod a+rw texto.txt se cambia para
-rw-rw-rw- mario users 845 Oct 14 12:40 texto.txt
NOTA: Cuando se crea un archivo o directorio nuevo, el sistema da permisos por default para los archivos (-rw-rw-r--) y directorios (drwxrwxr-x).
Modo
numérico.
chmod nnn <archivo>
donde: nnn
400 Permiso de lectura para el usuario
200 Permiso de escritura para el usuario
100 Permiso de ejecución para el usuario
040 Permiso de lectura para el grupo
020 Permiso de escritura para el grupo
010 Permiso de ejecución para el grupo
004 Permiso de escritura para el mundo
002 Permiso de lectura para el mundo
001 Permiso de ejecución para el mundo
La suma de los valores en la columna anterior indica cuales son los permisos que están siendo atribuidos o retirados.
ejemplo:
El comando "chmod 735 texto.txt" hará que el archivo quede con los siguientes permisos:
-rwx-wxr-x mario users 845 Oct 14 12:40 texto.txt
chown
la
propiedad de un archivo puede ser cambiada con el comando "chown".
chown <nuevo usuario> <archivo>
ejemplo:
chown mario texto1.txt = cambia la propiedad del archivo text1.txt del usuario actual a mario.
OBS: Por razones de seguridad solamente el superusuario (root) puede cambiar las propiedades de archivos.
ln
El comando "ln" sirve para definir links en el sistema, de manera de no necesitar duplicar archivos y directorios. La sintaxis es:
ln <archivo antiguo> <archivo nuevo>
Si
el link es aplicado en archivos localizados en sistemas de
archivos
diferentes, será enviado un mensaje de error (Cross-device link)
por el sistema. En este caso, utilice un link simbólico para el
archivo.
ln -s <archivo antiguo> <archivo nuevo>
A continuación se presentan otros comandos y algunos argumentos normalmente utilizados en C shell.
Normalmente, los comandos muestran sus resultados en la pantalla, o sea, el terminal es conocido como la salida predeterminada de los comandos (standard output). De la misma forma, usualmente los comandos operan sobre los datos que están siendo introducidos por el teclado, o sea, el terminal es la entrada predeterminada del comando (standard input).
UNIX permite direccionar la salida de un comando hacia cualquier otro archivo.
ejemplo:
ls > list.txt = la lista de los archivos en el directorio actual es almacenada en list.txt.
Un archivo puede ser indicado como entrada para un comando.
ejemplo:
cat < list.txt = el contenido del archivo list.txt es usado como
entrada para el comando cat.
Pipes y
pipelines
Un pipe ocurre cuando la salida de un comando es direccionada como entrada para otro. Un pipeline es una secuencia de pipes.
ejemplo:
ls /etc | wc = en donde wc muestra el número de líneas, palabras y caracteres del directorio /etc.
Cuando un comando es ejecutado sin problemas, produce resultados en la salida predeterminada, pero cuando el comando encuentra problemas en su ejecución, utiliza un canal diferente para enviar mensajes de error hacia el terminal. Este segundo canal, llamado de error estándar (standard error), puede también ser redireccionado.
Para redireccionar el error predeterminada hacia el mismo destino que el de la salida predeterminada, basta con adicionar un (&) en el símbolo de redirección de salida, o sea: >&
Para que un comando sea ejecutado sin presentar ningún mensaje de error, utilice la siguiente sintaxis:
comando >& /dev/null
Para separar el error estándar de la salida predeterminada, utilice la siguiente sintaxis:
(comando > archivo) >& errorfile
Cuando
se quiere forzar a que la salida aparezca en el terminal, la salida
puede ser redireccionada
hacia /dev/tty
comando >& /dev/tty
Después de que cada comando es interpretado por el C Shell un proceso independiente, con un número de identificación (PID) es creado para ejecutarlo. El sistema usa el PID para acompañar el status de cada proceso.
ps
Para verificar los procesos que se están ejecutando es utilizado el comando "ps". Este comando muestra:
Un proceso es denominado "daemon" cuando está continuamente en ejecución.
kill
El comando "kill" puede ser utilizado para forzar a terminar un proceso.
kill -9 <numero proceso-PID>
Alias
La utilización de aliases permite sustituir un comando largo por uno corto, o de más fácil sintaxis. Se puede también sustituir una secuencia de comandos.
alias <nombre del alias> '<comandos>'
Para que un alias sea global y permanente debe ser declarado en el archivo ".cshrc" que está en el directorio de login (directory home) del usuario.
ejemplo:
alias = muestra todos los alias declarados
alias rm 'rm -i' = permite que para cualquier eliminación de archivos sea pedida una confirmación.
unalias rm = borra el alias declarado del ejemplo anterior.
Todo UNIX permite ejecutar varios comandos de una vez colocándolos en background. Ejecutar un comando en background significa que otros comandos pueden ser introducidos mientras el otro se está ejecutando. Para ejecutar en background, la línea de comando debe ser terminada con un (&).
ejemplo:
nroff -ms text.file &
grep
El comando "grep" debe ser utilizado para buscar por un string de caracteres en un archivo específico.
grep <string> <file>
El comando "grep" puede también ser utilizado con redirección de salida, siendo frecuentemente usado como filtro con otros comandos.
ls -l | grep .cshrc = la salida del comando ls permite al grep
verificar la existencia del archivo .cshrc.
Arg List
too long
La lista de argumentos (lo que está escrito en la línea de comando después del nombre del comando) es muy larga. Revise los argumentos pasados y escriba nuevamente.
Broken pipe
Cuando se están ejecutando dos comandos vinculados por una tubería (|) y el programa en el lado de recepción del cerró antes de recibir todos los datos. No es propiamente un error.
Device or resource busy
Un dispositivo como un terminal o impresora, está siendo usado por otro programa. Espere hasta que el otro programa termine de usar el dispositivo.
Different file system
Cuando se usa el comando "ln" (para link simbólico) para crear una conexión para un archivo en un sistema de archivos diferente (un disco diferente o un computador diferente). Esto ocurre si el sistema no puede hacer una conexión soft de un sistema de archivos para otro. Use el comando df para descubrir qué discos tiene el computador y qué directorios están en cada disco. Si la versión del UNIX no puede hacer conexiones soft, la única solución será copiar el archivo en vez de crear la conexión para él.
File exists
Ya existe un archivo con este nombre. Este mensaje, es raro, porque la mayoría de los comandos del UNIX borra un archivo existente cuando quiere crear uno nuevo, a menos que se especifique un argumento al comando.
File table overflow
El sistema está demasiado ocupado y no puede manipular, simultáneamente, todos los archivos que los usuarios pidieron.
File too large
Cuando se intenta crear un archivo demasiado grande, debido a las limitaciones impuestas a cada usuario, establecido por el administrador del sistema. Verifique el espacio reservado para el usuario y solicite más espacio, en caso que sea necesario.
Illegal option
Cuando se digita una opción que no funciona con este comando. Revise lo que fue escrito y repita el comando. Vea también los argumentos del comando con "man <comando>".
Insufficient arguments
Fue omitido algún argumento en el comando. Revise lo que escribió y repita el comando. Vea también los argumentos del comando con "man <comando>".
I/O error
Fue escrito el nombre de un directorio, cuando UNIX solicitaba un nombre de archivo. Controle que fue escrito un nombre de archivo.
Login incorrect
Se está intentando hacer el login y no se introdujo el nombre del usuario correcto o la contraseña no corresponde. En el caso que se haya olvidado de la contraseña, solamente el administrador del sistema (root) podrá crear una nueva.
No such file or directory
Unix no puede encontrar un archivo o directorio con el nombre escrito. No hay que olvidar que el sistema hace distinción entre mayúscula y minúscula. Revise la grafía de los archivos y directorios con el comando "ls -s". Para nombres del camino, verifique si comienzan con una barra (camino absoluto) o no (camino relativo).
No such process
UNIX no puede encontrar el proceso al que se está haciendo referencia, normalmente relacionado al comando "kill". Verifique el número del proceso con el comando "ps".
No more processes
El sistema no puede crear más ningún proceso nuevo. Probablemente el sistema no tiene ningún espacio para este tipo de operación. Muchos procesos en background pueden causar este error.
No space left on device
El disco está lleno. Borre algo para liberar espacio o vea con el administrador del sistema quien se está excediendo en el disco donde apareció el error.
Not a diretory
UNIX necesitaba un nombre de directorio, pero en su lugar fue escrito un nombre de archivo. Corrija el nombre del directorio o créelo antes.
Not enough space
El sistema se quedó sin espacio en la memoria (no en el disco). Otros procesos demorados deben estar ejecutándose. Intente ejecutar nuevamente el proceso más tarde.
Permission denied
No hay permiso para hacer algo de lo que intentó hacer a través del último comando que fue ingresado. Use el comando "ls -l" para ver los permisos de archivos y directorios e inclusive para saber quién es el dueño.
Read-only file system
Se está intentando cambiar un archivo que el UNIX no está autorizado a cambiar. Pida al responsable del archivo que haga una copia del archivo que desea cambiar e indique los permisos que desee.
Too many links
Se está intentando crear tantas conexiones para un archivo que excedió el número máximo de conexiones por archivo.
Usage ...
UNIX no aceptó el número o el tipo de argumentos que fueron digitados después del comando. E indica la sintaxis correcta del comando.