![]() |
Curso introducción al Linux |
![]() |
|
---|---|---|---|
![]() |
Desde este link podemos acceder a la documentación sobre el modelo cliente / servidor que utilizamos en el Servicio de Bioinfromática para la realización del curso de doctorado "Introducción a la programación en lenguaje Perl para bioinformáticos".
Cuando estamos ejecutando una aplicación en un ordenador remoto a través de la red, tenemos un pequeño problemas que es que dependemos de que se mantenga la conexión de red para que nuestro programa se ejecute.
Si la conectividad con el servidor se pierde (ya sea por un problema de red o porque cerramos la ventana de SSH) la ejecución de la aplicación se aborta automáticamente y esto puede ser especialmente traumático si estabamos ejecutando un programa que necesita estar semanas calculando resultados.
No pasa nada, esta posibilidad esta contemplada en todos los sistemas Unix, y para ello existen multitud de comandos. Sobre todo son utiles los destinados al control de procesos y trabajos que se incluyen en la siguiente charla. Aquí hablaremos solo para empezar del comando nohup.
nohup - Resultado de la ejecución del comando [pgrillo@bioinfo
pgrillo]$ man nohup
Es posible que además de trabajar en modo texto sobre el Servidor de Bioinformática desde nuestro ordenador personal, deseemos que la salida gráfica de un programa que utilice X-Windows se nos muestre en nuestro escritorio de Mac o WindowsXP.
Es decir, obetener algo como esto (haga click para ver el screenshot1 screenshot2).
Esta maravilla es posible gracias al trabajo de los voluntarios del proyecto Cygwin, y la documentación necesaria puede obtenerse de aqui.
Cygwin, además es una implementación para Windows de las librerias de Linux, de tal manera que si lo tenemos instalado, no solo nos permite arrancar el servidor de gráficos de Linux (X-Windows) si no que además, nos permite la ejecución de gran cantidad de aplicaciones Linux dentro de nuestro Windows, lo cual puede ser interesante en ciertas situaciones.
En el caso de Macintosh, las nuevas versiones de MacOS, conocidas como MacOS X, son internamente un tipo de Unix, igual que Linux (aunque muy modificado por los ingenieros de Apple) y podemos utilizar esta característica para abrir ventanas de aplicaciones remotas Linux en nuestro Mac.
Cuando queremos crear ficheros, como puede ser en el caso de que programemos nuestra propia aplicación, o para modificar ficheros presentes en nuestros directorios de usuario como ficheros de secuencias con los que vamos a trabajar, etc. Necesitaremos usar un editor de texto de Unix. Vamos a ver los más sencillos, pese a que existen multitud de ellos, y por comodidad y razones didácticas, solo contemplaremos los editores de modo texto. Pero imaginemos la posibilidad de ejecutar un clon de Word en el servidor, y estar viendolo en nuestro PC o Mac a traves del X-Server. Todo es posible y es cuestión de elegir como queremos trabajar.
Los editores de texto que vamos a vomentar van desde lo mas sencillo, pico (o su clon GNU llamado nano), hasta el completísimo y famoso emacs que permite absolutas maravillas, bajo el coste de estudiar su documentación. No olvidaremos por supuesto el editor estandar de Unix, presente en cualquier sistema sea el que sea, llamado vi.
Ya hemos trabajado con ella, pero sabemos poco sobre sus multiples posibilidades. La mayoría pensareis que es parecida al MS-DOS o que os recuerda a los primersos sintemas informáticos que manejasteis, al menos a los más mayores. Pues tiene y no tiene que ver con todo esto. Tiene que ver, que lo bueno no tiene porque cambiar y por eso se parece a los antiguos sistemas de linea de comandos, y en que la teoría informática, como la de cualquier otra actividad científica, es algo estandarizado. Windows no lo es.
Pero la linea de comandos de Linux podra ser austera, pero es potente hasta tal extremo que una vez la dominas, llegas a odiar los gráficos salvo para lo que son necesarios, y no vuelves a pensar que un escritorio gráfico merezca la pena (sobre todo con los recursos de CPU que consume).
El interprete de comandos de serie en Linux es la BASH (Bourne Again SHell).
En este punto no vamos a entrar en más sobre ella, cuya documentación esta aquí, si no que nos centraremos en tres aspectos básicos de utilidad para el usuario como son 2 trucos o conceptos poco comunes en otros sistemas pero super importantes en Linux, y una configuración básica de nuestro entorno de usuario para sentirnos más cómodos trabajando en el servidor.
Es una de las características más potentes de los sistemas UNIX. La mayoría de los comandos de Unix toman cogen la entrada de la entrada estandar (teclado normalmente), dirigiendo la salida del programa a la salida estandar (la pantalla generalmente) y los errores al archivo estandar de error (que muchas veces es también la pantalla). [stdin, stdout, stderr].
- Redirección de la entrada:
$ mail pepe < cuento.txt
Nos coge el texto de ese fichero como cuerpo del mail que vamos a mandar.
- Redirección de la salida:
$ date > fecha.txt
Crea un fichero de texto plano que contiene la fecha tal y como el comando date mostraría por la pantalla.
- Redirección de errores:
$ cp 2> basura
Como no indicamos que copiamos y a donde, se nos mostraría un error por la pantalla. Ahora no se nos muestra nada, pero se introduce toda la salida (de error) en un archivo.
En Unix existen lo que se da en llamar expresiones regulares. Basándose en este concepto, con visualizadores de texto conmo less, o editores como vi podemos buscar patrones de texto de manera sencillísima y con mucha pontencia.
Ej. Abramos con less cualquier fichero de secuencias, por ejemplo en formato FASTA, y escribamos la siguiente secuencia de letras por el teclado: /a[agtc]a[agtc]
Es espectacular ver la rapidex con la que el Unix encuentra todos los patrones "a-cualquier base-a-cualquier base" que estan presentes en la secuencia completa del gen.
Con el comando alias, se pude definir un nombre alternativo para un comando enrevesado, por ejemplo:
$ alias dir = "ls -ld"
A partir de ahora, podemos ejecutar un nuevo comando inventado que se llamara dir, y hace un ls con opciones parecidas a las que muestra el MS-DOS.
Si queremos que estos cambios sean permanentes, podemos añadirlos a nuestro archivo de configuración de la linea de comandos .bashrc
NOTA: En el IIB tenemos los servidores configurados para que sea más facil la gestión de alias y de variables de entorno, existiendo los ficheros .aliases y .env, en los que el usuario puede definir lo que quiera, y que luego se "incluyen" dentro de .bashrc y asi este último y fundamental archivo no es accesible a los usuarios lo que impide su borrado o corrupción accidental.
El contenido del fichero .aliases es el siguiente (y se modifica acorde a lo que en el se puede observar ya definido).
type 'more'
dir 'ls -NF --color'
h 'history'
gv 'ghostview'
subject 'grep ^Subject /var/spool/mail/$USER'
mail 'pine'
Xterm 'xterm -ls -cu -fn courier_bold14 -fb terminal_bold14 -132 -sb -sl 100
-C -T `hostnam
e` -n `hostname` -bg white -fg blue -cr red'
vt52 'set term = vt52'
ti745 'set term = ti745 ; stty -tabs'
ti785 'set term = ti745 ; stty -tabs'
vt100 'set term = vt100'
ls 'ls -F'
ll 'ls -Fla'
j 'jobs'
emboss 'source /usr/local/contrib/EMBOSS/share/emboss_init.`echo
$SHELL | sed -e "s*^/bin/**"`'
.aliases es un archivo para definir nuestros propios alias de comandos
Servicio de BioInformatica | |
Ultima modificación: 28 de Febrero de 2003 |