Entorno de Cálculo

El componente con el que interactúa el usuario es interprete de comandos, más comúnmente denominado shell. Interpreta los comandos interactivos y las instrucciones de los programas (shell scripts). Existen múltiples shells (C Shell, Bash, K-Shell, … ). Por defecto el shell de los usuarios es BASH. Para comprobar que shell tiene puede usar el siguiente comando:

echo $SHELL
/bin/bash

Si necesita cambiar el tipo de shell, contacte con nuestro Dpto. Técnico en la dirección de correo para realizar el cambio.

Las variables de entorno son un conjunto de valores que definen como se comportan los procesos, del sistema y de usuario, a la hora de ejecutarse. La mayoría de los comandos y herramientas del sistema operativo, así como los programas que el usuario usa en su trabajo consultan el valor de ciertas variables de entorno para acceder a información que necesitan saber para ejecutarse correctamente. Para consultar las variables que un usuario tiene definidas en su entorno, puede usar el comando env.

El comando muestra la lista de variables definidas y su valor en la forma VARIABLE=valor. Por ejemplo, el valor de las variables $MANPATH, $PATH y $HOME:

MANPATH=/usr/share/man/es:/usr/share/man:/usr/local/share/man
PATH=/opt/jre1.7.0_21/bin:/usr/local/bin:/bin:/usr/bin
HOME=/home/usuario

Las variables de entorno que admiten una lista de distintos valores, en el ejemplo anterior MANPATH y PATH, estos valores deben estar separados mediante el caracter ':'. Los usuarios pueden definir sus propias variables de entorno mediante el comando export:

export TMPDIR=/home/usuario/tmp

Para modificar el valor de una variable de entorno ya definida, es posible usar el valor actual de la variable para definir el nuevo valor. Por ejemplo, para añadir una nueva ruta a la variable PATH el comando sería:

export PATH=/home/usuario/tmp:$PATH

en donde se añade la nueva ruta '/home/usuario/tmp' a las rutas ya almacenadas en la variable '$PATH`.

Muy relacionado con las variables de entorno están los scripts de inicio. Estos scripts permiten al usuario personalizar su entorno de trabajo para adaptarlo de forma automática al uso de los programas o utilidades más comúnmente utilizadas. No es objeto de esta introducción entrar en detalle en los distintos tipos de inicio de un shell o interprete de comandos en un sistema Linux, por lo que a continuación se darán unas sencillas instrucciones al respecto.

Un shell de Linux puede ser invocado de tres formas distintas: shell de login, shell interactivo y shell no interactivo. En los shells de login y shells interactivos el usuario interacciona con el sistema operativo mediante terminales. Los shells no interactivos son los que ejecutan los scripts y no interaccionan con el usuario. Para los propósitos de este manual, lo único importante es que cada uno de estos tipos de ejecución de shell utiliza diferentes scripts de inicio.

Como se ha detallado antes, por defecto todos los usuarios tienen asignado como shell, Bash. En Bash los login shell, por ejemplo shells lanzados vía el comando ssh, ejecutan uno de los siguientes archivos ubicados en el directorio $HOME del usuario: .bash_profile, .bash_login, o .profile (el primero que exista). En los shell que no realizan un login, por ejemplo shells lanzados con el comando bash, se ejecuta el archivo .bashrc también localizado en el directorio $HOME.

Para facilitar el uso de los diversos programas, herramientas y librerías que están instaladas en el sistema, SCAYLE usa la utilidad Environment Modules. Esta herramienta permite definir de forma sencilla todos los parámetros necesarios para que un programa funcione de forma correcta. Mediante la ejecución de un único comando se pueden definir todas las variables de entorno, alias, y rutas necesarias para la ejecución del programa deseado.

Para comprobar la lista de software disponible en la utilidad modules:

# module avail
------------------------------------------- /soft/calendula2/modulefiles -------------------------------------------
broadwell/singularity_2.5.2   haswell/mdynamix_5.2.8_intel18       haswell/singularity_3.1.1
broadwell/singularity_3.0.0   haswell/netcdf_4.6.1_intel18         haswell/smilei_4.1
broadwell/singularity_3.1.1   haswell/openmpi_2.1.2                haswell/su2_6.2.0_intel18
haswell/bowtie2_2.3.4.3       haswell/openmpi_3.1.2_gcc8.2.0       haswell/tophat2_2.1.1
haswell/bowtie2_2.3.5.1       haswell/openmpi_3.1.2_gcc8.2.0_pmix  sandybridge/gcc_8.2.0
haswell/bwa_0.7.17            haswell/orca_4.0.1                   sandybridge/hdf5_1.8.19_intel18
haswell/FFmpeg_4.1.3_intel18  haswell/orca_4.1.2                   sandybridge/nektar++_4.4.0_intel18
haswell/gcc_8.2.0             haswell/qespresso_6.3_intel18        sandybridge/nektar++_4.4.1_intel18
haswell/GDAL_2.4.1_intel18    haswell/samtools_1.7                 sandybridge/netcdf_4.6.1_intel18
…

Para definir las variables y rutas necesarias para ejecutar uno de los programas anteriores, usaremos el comando:

module load archivo_modules

por ejemplo:

module load haswell/smilei_4.1

Para comprobar que modificaciones realiza este comando en el entorno:

 module show haswell/smilei_4.1
-------------------------------------------------------------------
/soft/calendula2/modulefiles/haswell/smilei_4.1:

module-whatis   Variables de entorno para Smilei v4.1
module load     haswell/hdf5_1.8.19_intel18
prepend-path    PATH /soft/calendula2/haswell/Smilei/4.1
prepend-path    PATH /soft/calendula2/haswell/Smilei/miniconda3/bin
-------------------------------------------------------------------