Interfaces Linux |
---|
Escritorio GNU/Linux |
Ventajas y Desventajas de Linux |
Windows en Linux |
---|
Equivalencias |
Software Gráficos |
El Diseño Gráfico en Linux |
La Shell de GNU/Linux |
---|
Comando Básicos |
Permisos |
Archivos Comprimidos |
A cada dispositivo que permite a un usuario interactuar con una máquina se le llama terminal. Los dispositivos que controlan los terminales se designan con la palabra tty (TeleTYpe).
En GNU/Linux existe una emulación de varios terminales sobre un único monitor. Se denominan terminales virtuales . Para cambiar de un terminal virtual a otro se pulsa Alt-F1, Alt-F2, Alt-F3, etc o bien Ctrl-Alt-F1,Ctrl-Alt-F2,Ctrl-Alt-F3, etc, bajo X-Windows. De este modo tendremos acceso a los terminales /dev/tty1, /dev/tty2..., respectivamente. En cada uno de estos terminales puede mantenerse una sesión de trabajo distinta, incluso de usuarios distintos. usuario diferente. Se pueden definir hasta 12 terminales de texto. La configuración por defecto es de 6 terminales de texto (hasta Alt-F6) y se deja Alt-F7 para acceder a X-Window. Dentro del entorno gráfico uno puede a su vez arrancar tantos emuladores de terminal de texto como se desee.
Generalmente en una consola (terminal virtual) de texto se muestra al inicio información del nombre de la distribución y su versión, la versión del núcleo seguida de la arquitectura de la máquina, el nombre que se le asignó al sistema en la instalación (el de mi ordenador es siff) y la palabra login:
Red Hat Linux release 9 (Shrike)
Kernel 2.4.19 on an i686
siff login:
En el login se introduce el nombre del usuario del sistema y la contraseña o password. Si ambos son válidos, se establecerá una conexión y se mostrará el prompt. El prompt es una indicación que muestra el intérprete de comandos para anunciar que espera una orden del usuario.
Terminales virtuales y /etc/inittab
La información necesaria para arrancar los distintos terminales virtuales se encuentra en el fichero /etc/inittab. Las líneas relevantes son estas:
1:2345:respawn:/sbin/mingetty tty1
(...)
6:2345:respawn:/sbin/mingetty tty6
Para añadir una terminal basta con copiar una de las líneas más abajo en el fichero, cambiando el primer y el último número por el del número de terminal que deseemos por ejemplo, 8:2345:respawn:/sbin/mingetty tty8). La estructura de una línea en el inittab es la de una serie de campos separadas por : (dos puntos). El primero es un identificador de la línea, el segundo corresponde a los niveles de ejcución, el tercero indica una acción, en este caso respawn, que significa que el programa a ejecutar (cuarto campo) debe reiniciarse siempre que sea apagado. Así que cada consola tiene un identificador igual a su número, se activa cuando se entra en los niveles 2,3,4, o 5 y está gobernada por el programa mingetty en el directorio /sbin. Además, cuando uno sale de una consola (pulsando Ctrl-D o tecleando exit) el comando se vuelve a ejecutar y la consola renace. ¡Pruébalo!.
Un nivel de ejecución (runlevel) está caracterizado por los servicios que se ejecutan cuando se está en él. Cuando GNU/Linux arranca, mira en el fichero inittab cuál es el nivel de ejecución por defecto (initdefault) y luego se dirige a /etc/rc.d para iniciar o cerrar los servicios pertinentes.
Intérpretes de comandos (sh, tcsh, ksh, bash)
El programa que se arranca una vez hecho el login o entrada en el sistema es un intérprete de comandos
El intérprete de comandos (o shell) es el programa que recibe lo que se escribe en el terminal y lo convierte en instrucciones para el sistema operativo. También se encarga de completar las líneas de comandos, expandir los comodines (*,?,...) y, como todo lenguaje de programación, dispone de instrucciones para la repetición de comandos o su realización condicional.
A continuación se destacan aquellos que han alcanzado mayor difusión:
En tu sistema encontrarás bash, como "bash" y como "sh", tcsh bajo los nombres "csh" y "tcsh" y sh bajo el nombre "ash". Los intérpretes de comandos están en la ruta /bin. Tecleando ls -l /bin en una terminal podrás ver los enlaces simbólicos sh->bash y csh->tcsh.
Ficheros y directorios
El programa que se arranca una vez hecho el login o entrada en el sistema es un intérprete de comandos.
En Unix, y por lo tanto en Linux, todo es un archivo. El teclado, el monitor, el disco duro y hasta la memoria son tratados por el sistema operativo como archivos. De esta manera se utilizan los mismos métodos de apertura, escritura, lectura y cierre para todos ellos. La clase de archivos que acabamos de ejemplificar se es la de los archivos de dispositivos, y residen en la ruta /dev.
En DOS sólo se pueden ejecutar aquellos archivos con extensión .EXE . COM o .BAT. En Linux cualquier archivo puede ser ser ejecutable sin importar la extensión que tenga. El carácter ejecutable no lo confiere pues ninguna característica del nombre, sino que lo establece un atributo del sistema de ficheros, que hay que fijar mediante el comando adecuado.
El nombre de los archivos no está limitado como en DOS a 8 caracteres seguido de 3 caracteres de extensión. Puede tener puntos, guiones y demás símbolos como separadores. La longitud puede ser de 255 caracteres. No se puede asignar a un archivo el nombre / porque así es como se denomina al directorio raíz (el padre de todos los demás). NULL tampoco se puede utilizar porque se usa para representar "nada".
Árbol de directorios
Por ejemplo, /home/juan es el directorio del usuario juan.
Por ejemplo, /etc/passwd es una pequeña base de datos de los usuarios autorizados en el sistema. Contiene el directorio de inicio de cada usuario (que normalmente está en /home, el intérprete de comandos que usará, su identificador y el de su grupo (UID, GID respectivamente), etc.
Nota: /etc contiene una gran base de datos de configuración, distribuidos en múltiples archivos de texto plano organizados jerárquicamente según una estructura de directorios. Lo esencial es que simplemente con un editor de texto se puede configurar GNU/Linux, a partir de estos archivos (configuraciones globales) y otros similares en el directorio de cada usuario (configuraciones personales). Esta estructura impide que la corrupción de uno de estos ficheros afecte a la configuración global del sistema. Las herramientas gráficas de configuración no hacen más que facilitar la edición de estos ficheros, presentando un interfaz agradable y textos de ayuda. Cuanta mayor familiaridad con estos ficheros se tenga, más fácil es cambiar de distribución sin sentirse desasistido por el cambio de utilidades de administración.
Los dispositivos en /dev
Los siguientes ficheros son inquilinos habituales de /dev, aunque pueden estar ausentes de tu sistema si no tienes el dispositivo correspondiente o si por algún motivo no se ha creado su representación como nodo en el sistema de ficheros:
Ejemplo:
/dev/hda hace referencia a la totalidad del primer disco duro.
/dev/hda1 hace referencia a la primera partición de /dev/hda .
/usr, /sbin y directorios
/var, /mnt y /proc
Permisos, grupos y usuarios
Un usuario es una persona autorizada a utilizar un sistema informático. El usuario se autentifica mediante un nombre de cuenta y su clave o password.
Internamente, el sistema operativo asigna a cada usuario (cuenta en el sistema) un identificador UID (User ID). Cada usuario tiene asociado unos derechos que definen las operaciones que le son permitidas.
Los usuarios se organizan en grupos. Todo usuario debe pertenecer a un grupo. Los derechos de un usuario son los suyos propios más los del grupo al que pertenece. El sistema operativo asigna un identificador GID (Group IDentifier) a cada grupo.
Para controlar el acceso al sistema de ficheros se usan 9 bits.
Si es fichero de directorio:
Procesos
Un proceso es un programa en ejecución. Una de las funciones del sistema operativo es gestionar los procesos en función de las peticiones del usuario.
El sistema operativo tiene información de las características de cada proceso y de los recursos que éste tiene asignados.
La vida de un proceso tiene las siguientes fases:
En función del número de tareas y del número de usuarios que pueden ejecutar simultáneamente, un sistema operativo puede ser:
También se distingue entre SO monousuario y multiusuario en función del número de usuarios simultáneos que soportan.
El comando ps muestra la lista de todos los procesos activos en un determinado momento. Por ejemplo: ps -ef (-ef es una opción que muestra todos los procesos activos en formato largo). Otra combinación de opciones útil es -aux.
Para matar un proceso desde la línea de comandos se usa kill -s señal PID Donde "señal" es un número que indica que tipo de señal se le va a enviar al proceso (9 si queremos enviar la señal SIGKILL para matar al proceso, generalmente no es necesario), y PID es el identificador del proceso al que queremos enviar la señal (Process ID). El identificador de un proceso se puede obtener con ps.
Arranca desde una terminal en las X el programa xeyes ( xeyes &). Busca su número de proceso con ps y mátalo con kill. Puedes abreviar la llamada como kill -9 PID. Luego repite la maniobra con xkill.
Otro comando útil para matar procesos es killall nombre_de_proceso. Admite las mismas abreviaturas numéricas para las señales que kill, y la opción -ipara confirmar interactivamente la muerte de cada proceso.