En poco menos de dos semanas, tendrá lugar el inicio de un nuevo curso preparatorio para la certificación LPIC-1 , por lo que para aquellos que aún no estéis muy puestos en esto de los sistemas Linux pero queréis poneros a ello, en estos días os intentaré explicar algunas nociones básicas del sistema para que llegado el momento estéis preparados para iniciar dicho curso y poder obtener tan importante certificación , dado el aumento de la solicitud de este requisito en gran número de puestos de trabajo.


¿Se necesitan conocimientos previos para realizar el curso? En absoluto . El curso está diseñado de manera que un usuario sin nociones de Linux pueda aprovecharlo al máximo, ya que tanto el profesor como el resto de usuarios colaboran de forma activa para que todos saquen el máximo partido al curso. Ningún usuario avanzado podrá decir que se le han ocurrido todas las preguntas posibles ante los diferentes temas a tratar, por lo que incluso las dudas que se lleguen a plantear, por básicas que sean pueden dar pie a un debate, crear un hilo en el foro del curso e incluso que se vaya mejorando el temario para futuras ediciones.


Para ir empezando os dejo algunas definiciones de interés , que por algún lado hay que empezar y qué mejor que conociendo el entorno en el que vamos a trabajar.


¡Demonios, Linux!


Los que dicen que Linux es el mal encarnado sistema operativo, pueden llegar a tener razón ¡Esto está plagado de demonios!


En los sistemas Unix, a los servicios o procesos que se ejecutan en segundo plano se les suele llamar demonios. El por qué de esto lo encontramos en el acrónimo D.A.E.M.O.N. (Disk And Execution MONitor) , que define un tipo de proceso ejecutado en segundo plano y normalmente se trata de servicios propios del sistema que no suelen tener interacción por parte del usuario.


Estos demonios por norma general carecen de interfaz para que, como decíamos antes, el usuario no pueda interactuar con estos servicios de manera directa, además no sacan por pantalla posibles errores o el estado de su funcionamiento, si no que hacen uso de los archivos “log” a los que tendremos que echar un vistazo para revisar esto mismo.


Hola Root, ¿Me das permiso?

Root o Superusuario, no es más que un usuario que tiene permiso del sistema para realizar todo tipo de cambios . Por poner un ejemplo comparativo, viene a ser el usuario Administrador en sistemas Windows. Tiene los máximos privilegios posibles dentro del sistema, con lo que podrá hacer muchas más cosas que los usuarios comunes, pero para los privilegios tendremos nuestro propio apartado.


En el proceso de instalación de las distribuciones Linux, se nos suele pedir la contraseña que otorgaremos al usuario root, ya que por norma general y por seguridad estaremos realizando las modificaciones pertinentes con el usuario principal que nos hayamos creado también durante la instalación. Digo por seguridad porque el propio sistema no nos dejará modificar archivos concretos que impliquen cambios en el comportamiento del sistema, y nos pedirá que ingresemos como root; de esta forma podremos identificar cambios críticos.


Si por el contrario siempre actuamos como superusuario, podríamos realizar estos cambios relevantes sin más confirmación por parte del sistema y según el caso podríamos incluso dejar inservible el sistema.


Shell, Ordeno y mando.

Para que los usuarios podamos comunicarnos con el núcleo del sistema operativo y que este ejecute nuestras órdenes, necesitamos de un intermediario que traduzca dichos comandos a “lenguaje máquina”, un intérprete, que es la palabra con la que normalmente se definen las shells.

Este intérprete traducirá al kernel o núcleo los comandos u órdenes que enviamos mediante consola o interfaz gráfica a como hemos dicho antes “lenguaje máquina”, del mismo modo que nos traducirá las respuestas del kernel a un lenguaje entendible por nosotros.

La Shell más usada es bash, pero cada usuario podrá definir qué intérprete quiere usar en cada sistema, incluso en cada sesión iniciada en un mismo sistema siendo los más conocidos ksh, csh, tcsh, Zsh o ash.


Kernel, el núcleo de todo.

El Kernel o núcleo del sistema, se encarga de comunicar al software con los componentes físicos del equipo (hardware) además de que los diferentes procesos o servicios que se ejecuten en el S.O. se gestionen de forma eficiente así como otras tantas tareas, como por ejemplo facilitar el acceso a los datos contenidos en los diferentes medios de los que dispongamos en el equipo.


Es la “pieza” del sistema operativo que carga en primera posición durante un arranque del sistema, y permanece en la memoria RAM del equipo, siendo fundamental que ocupe un espacio lo más reducido posible para dejar sitio al resto de módulos del sistema o aplicaciones que se ejecuten.


Script.


Resumiéndolo mucho es un “mini-programa”. Un script son una serie de comandos secuenciados para que se ejecuten de forma continuada, es decir, cuando termine de ejecutarse el comando de la línea 1, se ejecutará el comando de la línea 2 y así hasta finalizar el documento; ya que estos Scripts suelen encontrarse por norma general en un fichero o archivo.


La principal razón por la que no se pueden considerar programas, es que éstos deben ser convertidos a código binario para poder ser ejecutados.


Identificaremos rápidamente los scripts dependiendo del sistema donde nos encontremos por la extensión, ya que en sistemas UNIX los veremos terminando en .sh y en sistemas Windows en .bat (en Windows se conoce a los scripts como archivos batch, de ahí esa terminación).


De la misma forma en la que los scripts pueden ayudarnos enormemente en la realización de tareas, sobre todo en aquellas muy repetitivas, debemos prestar especial atención, pues es la forma más común de que nuestro equipo se vea afectado por un virus, troyano, o cualquier otra desafortunada intrusión.


La Consola de comandos, ¡A teclear se ha dicho!


La consola de comandos o Terminal, no es más que el programa que usaremos para decirle a nuestro intérprete lo que queremos hacer , además de para interactuar con el sistema de ficheros, diferentes usuarios, configuraciones, etc…

A la hora de trabajar con comandos, es muy importante recordar que es susceptible a las mayúsculas , por lo que deberemos tener en cuenta cómo escribimos los comandos y cómo pasamos los argumentos.

No existe una única terminal. Hoy día podemos encontrar usuarios que están encantados de usar la terminal que viene preinstalada en todas o casi todas las distribuciones UNIX, como otros tantos que prefieren instalar otras consolas donde poder tener una barra de menús, o un emulador de X System Windows, o una terminal más liviana para nuestro sistema.


Para ir empezando…


Ya hemos visto algunas de las partes más importantes de un sistema Linux, por lo que os dejamos ahora una serie de comandos básicos para la terminal por si queréis ir indagando un poco por vuestra cuenta, en lo que vuelvo en unos días con una continuación de este artículo para seguir abriendo camino a vuestra matriculación en el curso preparatorio para vuestra certificación LPIC-1.


Al abrir la terminal nos encontraremos con el conocido como “ prompt ”. Explico qué es lo que se ve nada más abrir la consola:

usuario@equipo:~$

Donde…


Usuario: es el nombre del usuario con el que estamos conectados . Al principio oír esto puede llevar la contestación: “qué tontería ¿Cómo voy a olvidar el usuario con el que estoy logueado?”. Pues bien, cuando tengáis que pasar al usuario root para añadir más usuarios, editar algún fichero de configuración o gestionar de alguna forma más de un usuario, ya os acordaréis de prestar buena cuenta de qué usuario es el que está conectado, si no queréis tener que andar repitiendo varias veces los mismos comandos.


Equipo: Es el nombre del equipo en el que estamos trabajando, lo que se conoce como el hostname . Os pasará lo mismo que en el caso anterior, incluso más acentuado ¿En qué situación de despiste hay que encontrarse para olvidar en qué equipo estáis trabajando? Pues por ejemplo en el caso en el que tenéis que conectaros por ssh (en futuros posts hablaremos de esto, be patient) a uno o dos equipos por x motivos, y cuando vayamos a consultar un archivo o directorio, nos dé un micro infarto al ver que no tenemos tal o cual archivo o carpeta.


~: Aquí es donde veremos el directorio del sistema en el que nos encontramos . En este ejemplo, este símbolo identifica la localización como la raíz de la carpeta del usuario logueado.


$: El símbolo del prompt. En caso de ser usuarios se mostrará el que nos ocupa en el ejemplo, de ser usuario root el símbolo a mostrar será #.


Vamos con esos comandos para ir empezando:


Comando.

¿Qué hace?

Ejemplo de uso.

su

Cambia el usuario actual al usuario que definamos tras un espacio (solicitará contraseña del usuario con que queremos iniciar sesión)

su usuario2

ps -A

Muestra todos los procesos en ejecución y el identificador del proceso o PID

ps –A

ls -l

Lista los ficheros y directorios de la ubicación actual

ls –l

apt-get update

Actualiza la base de datos de paquetes a actualizar o instalar a partir del fichero '/etc/apt/sources.list'

apt-get update

apt-get upgrade

Actualiza todos los paquetes instalados en el sistema a la última versión disponible

apt-get upgrade

cd

Usaremos esta orden para cambiar al directorio que definamos tras un espacio.

cd /home/usuario1/Escritorio

cd..

Con los dos puntos seguidos, escalaremos un escalón hacia arriba en el directorio.

Si estamos en /home/usuario1/Escritorio

cd.. nos llevará a

/home/usuario1


Imagen por 0rAX0: http://www.deviantart.com/art/Linux-2014-Logo-457151181