230 likes | 380 Views
Tutorial de LINUX para Pronóstico Numérico 1er Cuatrimestre 2008. ¿ Qué es LiNUX ?
E N D
Tutorial de LINUX para Pronóstico Numérico 1er Cuatrimestre 2008
¿ Qué es LiNUX ? Linux es un clon de Unix gratuito, programado inicialmente por Linus Torvalds con la asistencia técnica de un grupo de hackers a través de la Internet, cumpliendo todas las características de los Sistemas Operativos UNIX actuales, y con todos los modernos avances en los Sistemas Operativos, con capacidad de multitarea real, memoria virtual, librerías compartidas, consumición escasa de recursos, manejo estupendo de la memoria, trabajo con TCP/IP. multitarea: muchos procesos ejecutandose simultaneamente multiusuario: varios usuarios trabajando simultaneamente en la misma maquina multiplataforma: Puede funcionar en distintas CPU
¿Como se usa? Primer paso: Ingresar usuario y contraseña en la pantalla de inicio del sistema. A partir de este momento se abrirá el entorno gráfico. En el mismo podemos encontrar muchas de las herramientas presentes en otros sistemas operativos como windows: editores de texto, herramientas de oficina, escritorio, ventanas, administradores de archivos, etc etc. Algunas versiones de linux cuentan con 2 o más escritorios que se pueden seleccionar mediante un menú. Este modo gráfico permite interactuar con el sistema operativo en una forma intuitiva y muy similar a la de otros sistemas.
Por otra parte tenemos el SHELL o caparazón que es el programa que permite la comunicación entre el usuario y el sistema operativo. Este consta de una serie de comandos que vamos a utilizar a lo largo de la materia. Para ingresar estos comandos, primero debemos abrir una TERMINAL, Podemos abrir tantas terminales como sea necesario. En general cuando iniciamos una terminal, esta nos posiciona en nuestro directorio HOME (salvo que le indiquemos lo contrario en la configuracion). En linux existe un único directorio raiz, y todos los discos o unidades de almacenamiento aparecen como directorios dentro de ese directorio raiz (no vemos unidades C: D: , etc como en windows por ejemplo). El directorio raiz se identifica como “/” , y nuestro directorio HOME es /home/mi_usuario/ Para saber en que directorio estoy podemos usar el comando pwd >>[juan@gustfront WRFV2]$ pwd >>/pronostico/wrf2.2.0/WRFV2
Algo importante a tener en cuenta: Linux distingue entre mayúsculas y minúsculas (Case sensitive) por lo que si en lugar de pwd ingresamos PWD o Pwd no obtendremos ningún resultado. Supongamos que queremos cambiar el directorio entonces podemos usar el comando cd (change directory) cd /usr/local Algunos casos especiales: cd ../ (me lleva a la carpeta inmediatamente superior). cd ./ (me deja donde estoy, increible pero esto sirve para algo…) cd pepe (me lleva al directorio pepe que esta en la carpeta donde estoy parado) cd /pepe (me lleva al directorio pepe ubicado en el directorio raiz, notar la diferencia entre el comando anterior y este, uno usa un camino relativo, mientras que el otro detalla la ubicación completa de la carpeta). cd (me lleva a mi HOME).
Para crear una carpeta usamos el comando mkdir (make directory) cd mkdir pepe (creo el directorio pepe en mi HOME) O bien puedo hacer: mkdir /home/mi_usuario/pepe Si el directorio pepe está vacío puedo borrarlo usando el comando rmdir rmdir pepe Para ver el contenido de una carpeta, podemos usar el comando ls (list) cd /home/mi_usuario/WRFLAB ls Mostrará un listado de los directorios y los archivos contenidos en dicha carpeta. Si queremos más informacion sobre los mismos podemos agregar algunos parámetros al comando ls
ls –l -rwxr-xr-x 1 juan cima 979986 Mar 14 10:47 ungrib.exe -rw-r--r-- 1 juan cima 1127 Mar 14 11:39 ungrib.log Esto nos da informacion sobre los permisos del archivo El dueño del archivo (quien fue el que lo copio/creo en dicha carpeta) , la fecha de copia/cración y finalmente el nombre del archivo. Si se trata de una carpeta delante de los permisos aparece una letra d drwxr-xr-x 2 juan cima 4096 Feb 26 17:16 papers Los permisos se aplican a 3 tipos de usuarios: dueño del arhivo / grupo / otros usuarios Cada usuario puede tener los siguientes privilegios: -Leer el archivo (read) (r), ejecutarlo (execute) (x) o modificarlo (write) (w)
Los permisos se pueden modificar usando el comando chmod, pero solo el dueño del archivo tiene autorización para modificar los permisos de un archivo. En general mi_usuario tiene permiso de escribir solo en la carpeta /home/mi_usuario/ y las subcarpetas contenidas en este directorio. Algunas variantes del comando ls: ls –sh (muestra el tamaño de cada archivo en Kb o MB) ls –t (ordena los archivos según su fecha de modificación). Si no especificamos nada ls nos muestra el contenido de la carpeta actual. ls /usr/local (me muestra el contenido de esa carpeta) ls *.ctl (me muestra los archivos en la carpeta actual que terminan en .ctl )
¿Cómo muevo un archivo o carpeta? mv (move). mv archivo1 archivo2 (mueve dentro de la misma carpeta el archivo1 al archivo2, es como cambiarle el nombre) mv /home/mi_usuario/WRFLAB/namelist.input /home/mi_usuario (mueve el archivo namelist.input de la carpeta /home/mi_usuario/WRFLAB a /home/mi_usuario) El comando mv también se puede usar para varios archivos al mismo tiempo o para carpetas. mv /home/mi_usuario/pepe /home/mi_usuario/pepe2 si pepe y pepe2 son subcarpetas esto mueve la carpeta pepe a la carpeta pepe2
El comando cp (copy), copia archivos (a diferencia del mv no los borra de su posición original). • cp /home/mi_usuario/namelist.input/home/mi_usuario/WRFLAB crea una copia en el directorio /home/mi_usuario/WRFLAB del archivo namelist.input presente en el directorio /home/mi_usuario/ • El comando ln permite crear algo similar a los accesos directos es decir puede crear en una carpeta un archivo que se comporte como un link a otra ubicación. • ln –s /home/mi_usuario/WRFLAB/namelist.input /home/mi_usuario/prueba.txt • En este caso prueba.txt es solo un link, cualquier programa que lea prueba.txt va a estar accediendo en realidad a /home/mi_usuario/WRFLAB/namelist.input
El comando rm (remove): Los archivos en los linux recientes se pueden borrar utilizando la herramienta de administración de archivos en la interfase gráfica. En este caso, al igual que en el windows los archivos eliminados van a una papelera de reciclaje donde pueden ser eliminados definitivamente o restaurados. Utilizando los comandos de la consola podemos borrar archivos con el comando rm. A diferencia del método anterior, los archivos son eliminados definitivamente y sin preguntar.Es por eso que hay que ser muy cuidadoso en el uso de este comando. rm pepe.txt (elimina el arhcivo pepe.txt de la carpeta actual). Mayor cuidado hay que tener cuando se utilizan * rm * (elimina todos!!! los archivos en la carpeta actual).
Como editar archivos de texto: En las diferentes distribuciones de linux existes muchos editores de texto, acá listamos algunos de los que permiten editar texto plano y que podemos utilizar en el curso. gedit y kedit Editores de texto plano con interfase gráfica. (se abren tipeando gedit o nedit en la consola). Existe un editor que trabaja a través de la consola y que se controla totalmente mediante el teclado vi . El vi perimete realizar cambios en los archivos de texto en forma rápida, pero requiere aprender una serie de comandos para su manejo. Por una cuestión de tiempo vamos a utilizar los editores en modo gráfico).
Como ejecutar un programa Para ejecutar un archivo, sea un programa compilado o un script tenemos que indicar en la consola la ubicación del programa. Por ejemplo para ejecutar el WRF usamos: /home/mi_usuario/WRFLAB/wrf.exe O podemos entrar al directorio /home/mi_usuario/WRFLAB cd /home/mi_usuario/WRFLAB ./wrf.exe EL “./” en este caso le indica al sistema operativo que el archivo que queremos ejecutar está en el directorio donde estamos posicionados actualmente!.
Como ejecutar un programa en batch: En el ejemplo anterior obtuvimos como resultado una gran “chorrera” de números y frases, además notamos que mientras se estaba ejecutando el programa no podíamos seguir ingresando comandos en otra terminal (aunque siempre podemos hacerlo en otra terminal distinta que esté libre). Existe una forma de ejecutar un comando y volver a obtener el “prompt” es decir, poder seguir ingresando comandos en la misma terminal. ./wrf.exe &en este caso, el WRF se ejecuta pero podemos seguir utilizando la terminal mientras esto sucede.
Lo que pasa en este caso es que no podemos ver lo que el programa está mostrando. Entonces tenemos que utilizar otra función que es la capacidad de decirle a un programa que cuando se ejecute, todo lo que iba a mostrar por pantalla, valla a un archivo de texto que nosotros elijamos. • ./wrf.exe > simulacion.txt • En este caso, todo lo que el WRF iba a mostrar por pantalla va a ir a parar al archivo simulacion.txt para que despues podamos abrirlo y verificar que todo anduvo bien (o no). • También existe una forma de ver la última parte del archivo simulacion.txt a medida que se va generando (es decir a medida que el wrf va escribiendo cosas ahí) y es utilizando el comando tail.
El comando tail nos permite ver la última parte de un archivo. tail simulacion.txt (nos muestra la última parte del archivo simulación al momento de ejecutar el comando) tail –f simulacion.txt (nos muestra la última parte del archivo simulaicón a medida que se va actualizando) Para interrumpir un programa que se está ejecutando podemos usar el comando [ctrl]+c El comando head hace algo similar al tail, solo que muestra el comienzo del archivo y no el final.
Otro problema es que si nosotros cerramos la terminal durante la ejecución de un programa este se interrumpe (aun si fue iniciado con el “&”). Para evitar esto existe el comando nohup . nohup comando & (en este caso el comando se va a ejecutar aún que se cierre la consola donde lo largué y aunque se cierre la sesión de la máquina). Por ejemplo nohup ./wrf.exe > simulacion.txt &(larga una simulación con el modelo WRF)
Situación crítica I: Largue una simulación con nohup o un programa con nohup y quiero interrumpirlo. En este caso, [ctrl]+c no va a dar ningún resultado. Para terminar un proceso debemos conocer su PID o Identificación de proceso. En linux cada proceso que se está ejecutando tiene un PID. ps –u Este comando nos permite ver el PID de los procesos de mi usuario que se están ejecutando actualmente. Para terminar un proceso uso la instrucción kill kill -9 PID (donde PID es el PID del proceso que quiero terminar).
Comandos … y algunas cosas más. • Si presionamos la flecha hacia arriba, obtenemos el último comando que tipeamos, si repetimos la operación aparecen los anteriores. • La tecla tab activa la función autocompletar. Supongamos que en el directorio actual existe 2 programa wrf.exe y real.exe y que queremos ejecutar wrf.exe. Entonces podemos tipear el comando completo ./wrf.exe o bien directamente tipear ./w + [tab] y automaticamente la máquina completa lo que falta. Esto funciona porque en nuestra carpeta existía un único archivo que empezaba con w. • El comando diff nos dice si dos archivos (de cualquier tipo) son iguales o no. diff archivo1 archivo2
El comando man nos da información sobre cualquier comando de linux, por ejemplo man ls despliega una página con información sobre como usar el comando ls. • El comando gzip se puede utilizar para comprimir un archivo. gzip archivo . El resultado será un nuevo archivo con el nombre del anterior pero extensión .gz. Para descomprimir archivos se utiliza el comando gunzip. • locate permite encontrar archivos y carpetas. • history nos da el resumen de los últimos 100 comandos que tipeamos en la pantalla.
Scripts: Al igual que como se hace en GrADS o en Matlab, se pueden hacer scripts para LINUX. Estos son archivos de texto que contienen una serie de comandos que van a ser ejecutados en orden. Además de estos comandos, los scripts de LINUX permiten utilizar estructuras similares a la de los lenguajes de programación con el if, el for el case, etc. Estos scripts son útiles a la hora de realizar tareas repetitivas o tareas que deben ejecutarse rutinariamente (automatización de procesos). Para más información sobre las nociones básicas ver http://www.ee.surrey.ac.uk/Teaching/Unix/index.html (muy recomendable). http://tldp.org/LDP/gs/node5.html http://www.fsid.cvut.cz/cz/U201/LINUX.HTML