You are on page 1of 164

Introduccin a Linux

Alberto Labarga Experimental Serendipity


Data analysis workshop for massive sequencing data
Granada, 13 de Junio de 2011

http://www.slideshare.net/alabarga/introduction-to-linux-for-bioinformatics

Proyecto GNU
Richard Stallman Proyecto GNU creado en el ao 1984.
Software Libre Licencias GPL Free Software Fundation

Estructura de GNU

Linux
Linus Torvalds. Nucleo Linux (1991)
Compatible con Unix Licenciado bajo GPL Publicado en Internet

Nucleo de Linux

GNU + Linux

GNU + Linux

Componentes de una distribucin

Componentes de una Distribucin

Recomendaciones

http://www.jomuoru.net/wp-content/uploads/2010/03/gldt102-full.png http://distrowatch.com

Shells
Los usuarios de Linux con frecuencia utilizan un tipo especial de programa llamado shell para interactuar con el kernel. Sistemas UNIX disponen de diferentes Shell: Bourne shell (sh), C shell (csh), Korn shell (ksh), TC shell (tcsh), Bourne Again shell (bash). La ms popular es la bash shell.
echo $SHELL

Shells
La shell se ejecuta dentro de una terminal emitiendo un "prompt y esperando a que le digan qu hacer. Luego, el usuario le pide a la shell que ejecute un programa escribiendo el nombre del programa. La shell bash se puede utilizar de modo interactivo o como un lenguaje de escritura de gran alcance. La shell bash guarda el historial de las lneas de comando ejecutadas. La lneas de comando se pueden recuperar desde el historial.

Shells
Al arranque Bash ejecuta comandos hallados en el archivo ~/.bashrc, permitindole a los usuarios personalizar su shell.

Inicio de sesin en una mquina a travs de la red


Al utilizar la opcin ssh ("secure shell"), los usuarios pueden iniciar una sesin fcilmente en mquinas remotas ya sea en el mismo lugar o al otro lado del mundo.

putty download http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

winscp download http://winscp.net/eng/docs/lang:es

Para empezar
Algunos comandos para ir jugando:
whoami muestra el nombre del usuario id muestra la informacin sobre el usuario who muestra otros usuarios logueados date fecha/hora del servidor cal muestra el calendario history muestra el historial de comandos

Informacin del sistema


uname
alabarga@genome2:~$ uname -a Linux genome2 2.6.28-15-generic #49-Ubuntu SMP Tue Aug 18 19:25:34 UTC 2009 x86_64 GNU/Linux

hostname
alabarga@genome2:~$ hostname genome2

quin se encuentra en el sistema


El comando whoami simplemente entrega el nombre del usuario actual. Los usuarios pueden utilizar el comando who, w y finger para determinar quin se encuentra en el sistema y cmo iniciaron la sesin.
alabarga@genome2:~$ who alabarga pts/0 2010-11-23 23:24 (159.red-88-24-133.staticip.rima-tde.net)

Listado del contenido de un directorio con ls


Desde una shell los usuarios pueden utilizar el comando pwd para conocer donde se encuentran y ls para hacer un listado del contenido del directorio..ls -al
alabarga@genome2:~$ pwd /home/alabarga alabarga@genome2:~$ ls 101x 4store alignment.html analisisMicroarrays.tar apache-solr-1.4.0.zip apache-tomcat-6.0.20

GenomeStudio-Docs.zip GenomeStudio-Software-2009.2.exe gpu igv igv.log IGVTools

papersTesis pmids.txt pubby-0.3

Tambin se puede usar find

Listado de rboles de directorios


El comando ls, cuando se da un directorio como argumento, ste lista el contenido del directorio. Por defecto, el comando ls slo mostrar el contenido del directorio del nivel ms alto. Para que el comando ls liste los subdirectorios, puede aadir la opcin -R.

El directorio de inicio del usuario


Cada usuario del sistema Linux se le asigna un directorio especial llamado su directorio de inicio home directory. Cuando un usuario inicia sesin en el sistema por primera vez se le ubica "en" su directorio de inicio, es decir, el sistema configura su directorio de inicio como su directorio de trabajo inicial. Habitualmente, el subdirectorio del usuario se posiciona bajo el /home directory con el nombre de la cuenta del usuario: /home/alabarga

root vs./root vs./ (la raz del sistema de archivos)


La raz o el "root" en ingls, es el nombre de usuario del superusuario, es decir, el usuario con autoridad suprema sobre el sistema. Tambin es el nombre del directorio de inicio de ese usuario, /root. Este trmino se utiliza para la base (la parte superior?) del rbol de directorios del sistema de archivos, el directorio /.

El directorio temporal /tmp


Los usuarios tienen acceso para compartir un espacio de "borrador", en el directorio /tmp. El directorio /tmp le da a todos los usuarios acceso a espacio adicional para cumplir con necesidades a corto plazo sin cargar el espacio en su cuota. El sistema borra automticamente los archivos puestos en este directorio despus de unos das.

El directorio de configuracin /etc


Los archivos de configuracin normalmente se colocan en /etc o en un subdirectorio de /etc. Los usuarios comunes no pueden modificar los archivos en /etc Los administradores de sistemas invierten bastante de su tiempo trabajando con los archivos almacenados aqu.

Los directorios de comandos /bin y /usr/bin


La mayora de los comandos del sistema se encuentran almacenados como archivos binarios en un formato legble para la mquina. Los comandos apropiados para el uso de usuarios comunes se suelen ubicar en los directorios binarios /bin o /usr/bin. Las utilidades ms importantes como ls, cd, cp, mv y el editor de texto vi, sin los cuales no se podra usar el sistema van en /bin. Las utilidades adicionales como los compiladores, su navegador de web y la suite de oficina van en /usr/bin

Los directorios de comandos /sbin y /usr/sbin


/sbin y /usr/sbin almacenan archivos de comandos para que el superusuario root los utilice. Estos incluyen comandos para adjuntar y quitar hardware, para iniciar y detener el sistema y para realizar mantenimiento del sistema.

El directorio "variable" /var


Algunos archivos, cambian con frecuencia. Estos incluyen:
Correo electronico entrante y saliente, Log de sistemas, Sitios web sites, Archivos ftp, entre otros.

Archivos y directorios con contenido variable suelen recopilarse en el directorio /var. El colocar dichos archivos aqu hace ms fcil asignarles espacio y proteger los archivos ms estables que se encuentran en alguna otra parte del sistema.

Cambio de sitio- El comando cd


Los Procesos pueden cambiar sus cwd cuando sea necesario. Esto incluye la shell de comando bash, la cual proporciona el comando cd (del ingle change directory) para cambiar el directorio actual desde el intrprete de comandos.

Nombres de directorios especiales


Simbolo Significado

El actual directorio de trabajo El directorio padre El directorio home del usuario El anterior directorio de trabajo El directorio raz

..
~ /

Creacin de directorios (nuevos, vacos): mkdir


El comando para hacer un directorio nuevo es el comando mkdir (del ingls make directory). Uso:
mkdir [OPCIONES] {DIRECTORIO...} Crea el(los) DIRECTORIO(s) si no existe(n). Falla y emite un mensaje de error si uno o ms de los DIRECTORIO(s) existen, pero los nuevos directorios restantes son an creados.

Borrar directorios (vacos): rmdir


El comando para borrar un directorio es rmdir. (remover directorio). Uso:
rmdir [OPCIONES] {DIRECTORIO...} Suprime el (los) DIRECTORIO(s) si estn vacos. Emite un mensaje de error si uno o ms del (los) DIRECTORIO(s) no est(n) vaco(s), pero los directorios que quedan (vacos) se borran. Tenga en cuenta que un directorio que contiene slo un subdirectorio no se considera como vaco.

Tamao
df # disk space free -g # memory info in Megabytes du -sh # disk space usage of current directory du -sh * # disk space usage of files/directories du -s * | sort -nr # shows disk space used by different directories/files sorted by size

Ver el contenido de un archivo con cat


Aunque hay varios comandos disponibles para ver los archivos, el comando ms sencillo es cat. Cuando se le da una lista de archivos al comando cat este concatena los archivos a la salida del terminal. Tambin podemos usar more y less

El comando head
head [OPCIONES] [ARCHIVO...] Algunas veces todo lo que se necesita al examinar un archivo es ver las primeras lneas del archivo. El comando head nos permite hacer esto.

El comando tail
tail [OPCIONES] [ARCHIVO...] Para complementar head, el comando tail muestra las ltimas 10 lneas de cada FILE a la salida estndar. El comando tail tiene otra opcin bastante til: la opcin -f (follow). Con esta opcin tail mostrar las ltimas lneas del archivo y luego "espera" y continua presentando cualquier nueva lnea al ser aadida al archivo.

Redireccionamiento de salidas de los comandos a archivos


ls y cat ejecutan su salida y se presentan en el terminal. La mayora de los comandos que generan texto en la salida utilizan un concepto comn de Unix denominado "salida estndar". La shell bash permite a los usuarios "redireccionar" la salida estndar a otros lugares. Por ahora, vamos a aprender el caso ms fcil: la utilizacin del caracter > para redireccionar la salida estndar a un archivo.

redirecciones
La shell bash usa > para redirigir un flujo de stdout de proceso a un archivo. Para agregar una salida de un comando a un archivo, en lugar de sobrescribirlo, bash usa >>. bash usa < para hacer que lean entradas desde alguna parte diferente al teclado.
ls > mis_archivos.txt

Comando echo
El comando echo toma cualquier texto que se teclee como parte del comando y lo repite a la salida estndar (usualmente lapantalla) Este comando sencillo junto con el redireccionamiento, se puede utilizar para crear archivos de texto.
echo hola > saludo.txt echo buenos dias >> saludo.txt cat saludo.txt

Entrada estndar (stdin), salida estndar (stdout), error standard (stderror)


Los programas de terminal suelen leer informacin como un flujo desde una sola fuente tal como el teclado de una terminal (stdin) Generalmente, escriben informacin como un flujo a un solo destino como por ejemplo una pantalla (stdout) Generalmente, stdin y stdout estn conectadas a la terminal que ejecuta el comando. Se considera conveniente redirigir (stdin) desde (stdout) hacia los archivos. Los programas Unix reportan condiciones de error a un destino llamado error estndar (stderr).

Descriptores de Archivos
Como protocolo de Linux (y Unix), cada proceso hereda tres archivos abiertos tras el inicio.
Primero, descriptor de archivo 0, es la entrada estndar. Segundo, descriptor de archivo 1, es la salida estndar. Tercero, descriptor de archivo 2, es el error estndar. Flujo Descriptor Abreviacin

Standard In
Standard Out Standard Error

0
1 2

stdin
stdout stderr

redirecciones
Usualmente, stderr est conectado a una pantalla de terminal y los mensajes de error se encuentran entremezclados con las salidas estndar. Cuando se utiliza la shell bash, el flujo de stderr puede redirigirse a un archivo mediante 2>. Al utilizar bash, el flujo de stderr puede combinarse con el flujo de stdout mediante 2>&1 o >&
ls > rcsummary.out 2> rcsummary.err

ls > rcsummary.out 2>&1

Redireccin de stdin, stdout y stderr en bash


sintaxis cmd < file
cmd > file cmd >> file cmd 2> file cmd 2>> file cmd > file 2>&1 cmd >& file

efecto Redirigir stdin desde file


Redirigir stdout a file. Reescribir si existe Redirigir stdout a file. Agregar si existe Redirigir stderr a file. Reescribir si existe Redirigir stderr a file. Agregar si existe Combinar stdout y stderr a file Combinar stdout y stderr a file

Ejemplo
alabarga@genome2:~$ ls *.zz ls: cannot access *.zz: No such file or directory alabarga@genome2:~$ ls *.zz > zz.txt ls: cannot access *.zz: No such file or directory alabarga@genome2:~$ cat zz.txt alabarga@genome2:~$ ls *.zz >& zz.txt alabarga@genome2:~$ cat zz.txt ls: cannot access *.zz: No such file or directory

Tuberas
El flujo de stdout desde un proceso puede estar conectado al flujo de stdin de otro proceso mediante lo que Unix llama una "tubera". Varios de los comandos en Unix estn diseados para operar como un filtro, leer la entrada desde stdin y enviar la salida a stdout. bash usa "|" para crear una tubera entre dos comandos.

Vim: control
vi my_file i # INSERT MODE R # replace MODE ESC # NORMAL (NON-EDITING) MODE

vim
: # commands start with ':' :w # save command; if you are in editing mode you have to hit ESC first!! :w new_filename # saves into new file :#,#w new_filename # saves specific lines (#,#) to new file :q # quit file, don't save :q! # exits WITHOUT saving any changes you have made :wq # save and quit

Vim: moving around


:# go to specified line number $ # moves cursor to end of line A # same as $, but switches to insert mode 0 (zero) # moves cursor to beginning of line CTRL-g # shows at status line filename and the line you are on SHIFT-G # brings you to bottom of file, type line number (isn't displayed) then SHIFT-G # brings you to specified line#

Vim: more commands


d$ # deletes from cursor to the end of the line dd # deletes entire line :s/old_pat/new_pat/ # replaces first occurrence in a line :s/old_pat/new_pat/g # replaces all occurrence in a line :%s/old_pat/new_pat/g # replaces all occurrence in file u # undo last command

Copiar archivos
Puede copiar archivos de un directorio a otro o de un nombre a otro (renombrarlos) con el comando cp (copy). Uso:
cp [OPCIONES] {FUENTE} {DESTINO} cp [OPCIONES] {FUENTE...} {DIRECTORIO}

Ejemplos:
cp saludo.txt hola.txt cp hola.txt /tmp

Mover/renombrar archivos
Puede mover archivos de un directorio a otro o de un nombre a otro (renombrarlos) con el comando mv (mover). Uso:
mv [OPCION...] {FUENTE} {DESTINO} mv [OPCION...] {FUENTE...} {DIRECTORIO}

Ejemplos:
mv saludo.txt borrar.txt mv borrar.txt /tmp

Borrar archivos
Se pueden suprimir (eliminar, borrar) archivos con el comando rm (remove). Uso:
rm [OPCIONES] {ARCHIVO...}

Examples:
rm /tmp/borrar.txt

Copiar rboles de directorios


El comando cp puede ser usado para copiar arboles de directorios completos con la opcin: -r (recursivo).
cp R seq2011 backup

Borrar rboles de directorios


Con la opcin correcta, el comando rm puede borrar o eliminar arboles de directorios completos.
rm R backup

Nombres y comodines de archivos


Conceptos clave
Los nombres de archivos pueden contener casi cualquier caracter a excepcin de /. Aunque los nombres de archivos pueden contener casi cualquier caracter eso no significa que deban contenerlos. Los archivos que comienzan con . son archivos "ocultos". Los caracteres *, ?, [...], y [^...] se pueden utilizar para encontrar los archivos con nombres de archivos similares por medio de un proceso llamado "comodines de archivo".

Nombres de archivo
En Linux, virtualmente cualquier caracter imprimible se puede utilizar en el nombre de archivo y los nombres pueden ser casi de cualquier longitud.
Los nombres de archivos de Linux pueden tener hasta 255 caracteres. Pueden contener cualquier caracter imprimible (y algunos que no lo son) a excepcin de la barra oblicua /.

Caracteres "seguros" para nombres de archivos


A-Z a-z 0-9 . _ - + ~ Watch those spaces!

Archivos ocultos
Los nombres de archivos y directorios (recuerde un directorio es un tipo de archivo) que comienzan por un punto (.) son archivos "ocultos". Estos archivos no aparecen en los listados de directorio producidos por ls a menos que se utilice la opcin de comando especial -a.

"Comodines"
La shell de comando bash trata algunos de sus metacaracteres especiales como comodines. The shell performs a process called meta-character expansion or wildcard expansion El shell realiza un proceso llamado expansin de metacaracteres o expansin de comodines
Genera una lista de nombres de archivos que coinciden con el patrn descrito por la expresin del comodn Luego, pasa la lista generada al comando. Todo esto, se conoce comnmente como "comodines de nombres de archivos."

Caracteres Comodines
Caracter
* ? [...] [^...]

Efecto
coincide con cero o ms caracteres (a excepcin del punto inicial) coincide exactamente con un caracter (a excepcin del punto inicial) coincide exactamente con un caracter de la lista o rango coincide exactamente con un caracter no incluido en la lista o rango

Ejemplo de Comodines
Patrn
* *.html page*.htm* image?.* [ps]* [^ps]*

Genera la Lista

todos los archivos en la lista


page1.html page2.html page1.html page2.html page3.htm page40.htm image1.jpeg image2.jpeg page1.html page2.html page3.htm page40.htm script1.pl image1.jpeg image2.jpeg image10.jpeg image11.jpeg

Bsquedas
find
find -name "*pattern*" # searches for *pattern* in and below current directory find /usr/local -name "*blast*" # finds file names *blast* in directory find /usr/local -iname "*blast*" # same as above, but case insensitive find . -mtime -1 find . -mtime -1 ls find / -size +10000k

additional useful arguments: -user <user name>, -group <group name>, -ctime <number of days ago changed>

Bsquedas
locate
locate "*.dat" q -i, in case you wanted to perform a case insensitive search -c, instead of writing file names on standard output, write the number of matching entries only.

which <application_name> # location of application whereis <application_name> # searches for executables

wget
Descarga recursos de modo recursivo, en ambiente no interactivo de los protocolos HTTP, HTTPS y FTP. Cuando se llama con una URL como su argumento, el comando wget recupera el contenido de la URL y lo almacena en un archivo local en el directorio actual de trabajo del mismo nombre.

export http_proxy=http://stargate.ugr.es:3128/

Manipulacin de ficheros de texto

Comando Word Count (wc)


El comando wc cuenta el numero de caracteres, palabras y lineas. Tomar su entrada ya sea de archivos llamados en su lnea de comandos o desde su entrada estndar.
wc [-c] [-l] [-w] [filename]

Bsqueda de Texto: grep


grep es un comando que imprime en pantalla lneas coincidentes con un patrn de una cadena de texto especificado. grep suele utilizarse como filtro para reducir salida a slo lo deseado. grep -r buscar de modo recursivo bajo un directorio determinado. grep -v imprime lneas NO coincidentes con una cadena o patrn de texto. Muchas de las opciones permiten a los usuarios especificar el formato de salida de grep.

grep

Ordenando todo: sort


Conceptos clave
El comando sort clasifica datos en orden alfabtico. sort -n ordena numricamente. sort -u clasifica y suprime duplicados. sort -k y -t clasifica en un campo especfico.

ls -s | sort -n

Opciones para especificar el orden de clasificacin

El comando uniq
El programa uniq se utiliza para identificar, contar o suprimir registros duplicados en la informacin clasificada.

sed: string replacement


Line-oriented tool for pattern matching and replacement (stream editor) Not really a programming language (cf. awk) E.g., apply same change to lots of source files Filter, i.e., does not modify input file

Ejemplos
Reemplazar: Borrar lineas 1-10: Borrar comentarios: Borrar lineas en blanco: sed e s/regex/replacement/ sed -e '1,10d sed -e '/^#/d sed -e '/^$/d

tr
Tambin podemos utilizar tr echo HELLO | tr 'A-Z' 'a-z'

awk
Special-purpose language for line-oriented pattern processing pattern {action} action =
if (conditional) statement else statement while (conditional) statement break continue variable=expression print expression-list

awk
Patterns = boolean combinations of regular expressions and relational expressions awk f program < input > output Also delimiter-separated fields: BEGIN {FS=c} Examples:
Print lines longer than 72 characters: length > 72 print first two fields in opposite order { print $2,$1 }

awk examples
Add up first column, print sum and average
{s += $1 } END {print sum is, s, average is, s/NR}

Print all lines between start/stop words: /start/,/stop/ Print all lines whose first field differs from previous one: $1 != prev {print; prev = $1}

awk
Problem : Get the userid of a user from the /etc/passwd file.

Suppose /etc/passwd file contains the following entries


arun:x:504:504::/home/arun:/bin/bash try:x:500:500::/home/try:/bin/bash optima:x:501:501::/home/optima:/bin/bash optimal:x:502:502::/home/optimal:/bin/bash awk will see this file as follows 1 line = 1 record (by default) so in total there are 4 records in the file. 1 record = 7 fields separated by : (Not by default) Note : Default field separator is space.

A simple example (cont..)


$ awk F: {print $1 $3} /etc/passwd

Awk executable Field Separator

Action to perform on line If pattern matches

pattern to search

The file to operate upon

sed/awk
sed '/^>/d' F5R3.fasta | sort | uniq | awk '{print ">SEQ"NR"\n"$0 }'

csplit/cut
csplit -f out fasta_batch "%^>%" "/^>/" "{*}" # splits fasta batch file into many files # at '> cat my_table | cut -d , -f1-3 # cut command prints only specified sections of a table, # -d specifies here comma as column separator (tab is # default), -f specifies column numbers.

cut -d: -f1,5 /etc/passwd

Ejercicio
ls -s | sed -e 's/^[ ]*//' | cut -d " " -f2

Comandos avanzados

Sustitucin del Historial


Como una alternativa a las teclas de direccin, la shell bash tambin realiza "sustitucin de historial", la cual se desencadena por el signo de exclamacin. El siguiente cuadro resume la sintaxis de sustitucin de historial ms utilizada.

Valores de retorno
La shell bash almacena el valor de retorno del comando ejecutado anteriormente en una variable especial llamada ?. El valor de retorno del ultimo programa ejecutado e puede examinarse con el comando echo $?.

Ejecucin de comandos mltiples de modo condicional


La shell bash permite a los usuarios unir comandos mltiples en una sola lnea de comandos separando los comandos con un ;. La shell bash usa && y || para unir dos comandos de modo condicional. Cuando los comandos se unen de este modo, el primero siempre se ejecutar. El segundo comando puede que se ejecute o no dependiendo del valor de retorno del primer comando. Ejemplo: mkdir /tmp/boring && mv numbers.txt /tmp/boring

Ejemplos de Alias
Los siguientes alias podran ser tiles. Puedes configurarlos en el archivo ~/.bashrc.

Buscar los 5 archivos mas grandes

alias findbig="find . -type f -exec ls -s {} \; | sort -n -r | head -5"

Ubicar los procesos bash:


alias psg="ps -aux grep bash"

Lista en formato largo: alias ll='ls -l'

Archivos de arranque del BASH


Cuando el BASH es invocado de manera interactiva, primero lee y ejecuta comandos desde el archivo /etc/profile, si es que existe. Una vez ledo este archivo, BASH ejecuta comandos del primer archivo que exista y que BASH pueda leer de entre los siguientes archivos: ~/.bash_profile, ~/.bash_login, y ~/.profile, en ese orden.

Archivos de arranque del BASH


Cuando salimos de una sesin de login, BASH lee y ejecuta comandos desde el archivo ~/.bash_logout, si es que este archivo existe.

Usuarios

Usuarios de Linux y el archivo /etc/passwd


Conceptos Claves
A un nivel inferior los usuarios son representados por un nmero entero llamado Id del usuario (uid). Cada proceso que se desarrolla en el sistema se ejecuta como un uid dado Cada archivo en el sistema de archivos es propiedad de un uid El archivo /etc/passwd asigna los uids a las cuentas de usuario. Las cuentas de usuarios asignan los uids al nombre del usuario, contrasea, Id de Grupo (s), directorio de inicio y shell de inicio. La contrasea se puede cambiar con el comando passwd.

Los usuarios de Linux y el archivo /etc/passwd.


En Linux, usted primero se identifica al entrar con un nombre particular de usuario nombre de usuario. Cada proceso que se ejecuta en el sistema tiene un nombre de usuario asociado. El username, est asociado con las cosas que usted hace, grabe o use. Cada usuario en el sistema tiene un unico userid (uid) Linux rastrea los userids como un nmero entero de 32bits

Los usuarios de Linux y el archivo /etc/passwd.


El sistema mantiene una base de datos que asigna los nombres de usuarios a los userids. Esta base de datos se almacena en el archivo de configuracin /etc/passwd [elvis@station elvis]$ tail /etc/passwd apache:x:48:48:Apache:/var/www:/bin/bash postfix:x:89:89::/var/spool/postfix:/sbin/nologin elvis:x:501:501::/home/elvis:/bin/bash

Archivo /etc/passwd
El archivo /etc/passwd
El archivo de texto /etc/passwd contiene nombres de usuario y sus correspondientes userids y alguna otra informacin.

Las contraseas y el archivo /etc/shadow.


Exponer la forma encriptada de su contrasea es peligroso en /etc/passwd es peligroso. Linux y Unix almacenan las contraseas utilizando una nueva tcnica llamada "Shadow Passwords" El archivo contiene slo informacin relacionada con las contraseas, Sus permisos no permiten ver su contenido.

Los grupos Linux y el archivo/etc/group.


Bsicamente, un grupo es solo un group id (gid) de un nmero entero Cada proceso que se ejecuta en el sistema opera bajo na coleccin de grupos (gids). El archivo /etc/groupasigna gids a nombres y a membresas de grupo. Cada archivo en el sistema de archivos pertenece a un solo gid. Los usuarios tienen un solo grupo primario definido en el archivo /etc/passwd. Los usuarios pueden ser miembros de mltiples grupos secundarios definidos en el archivo /etc/groups.

Grupos de Linux
Cada proceso se ejecuta bajo el contexto de un usuario dado. Los usuarios, los procesos que estos operan y los archivos que poseen, pertenecen a la coleccin de grupos Las membresas de grupo le permiten a los administradores de sistemas manejar eficientemente las colecciones de los usuarios que tienen objetivos similares. Cada usuario es miembro de un grupo primario.

El archivo /etc/group
Para el kernel de Linux, un grupo es nombrado usando un id de grupo (GID) de 32 bits El archivo /etc/group asocia nombres de grupo con GIDs (para humanos). Define los usuarios que pertenecen a cada grupo.

El archivo /etc/group
Examine su archivo /etc/group

wrestle:x:201:ventura,hogan,elvis physics:x:202:einstein,maxwell,elvis emperors:x:203:nero,julius,elvis governor:x:204:ventura,pataki music:x:205:elvis,blondie,prince,madonna dwarfs:x:206:sleepy,grumpy,doc elvis:x:501: prince:x:502: madonna:x:504: blondie:x:505:

Grupos primarios y secundarios


Debido a que cada archivo debe tener un grupo propietario, debe haber un grupo por defecto asociado con cada usuario.
Este grupo por defecto se convierte en el propietario del grupo de los archivos recin creados Este grupo se conoce como el grupo primario del usuario. Un grupo primario de usuario se define en el cuarto campo de una entrada de usuario /etc/passwd.

Usuarios pueden optar tambin por pertenecer a otros grupos.


Estos grupos se llaman grupos secundarios Estn definidos en el cuarto campo del archivo /etc/group file.

Cambio de mis membresas de grupo


nicamente el usuario administrativo root, puede cambiar las membresas de grupo.
Usando el comando usermod y groupmod. O la utilidad grfica system-config-users

El uso de estos comandos se ver en otro curso.

Cambio de identidad
El comando su le permite a un usuario cambiar el id del usuario sudo permite ejecutar comandos como root

Permisos

Permisos de usuario

Interpretacin de Permisos
Para poder interpretar los permisos de archivos, se revisa el siguiente ejemplo:

Cambio de permisos de archivos: chmod


El comando chmod se utiliza para modificar los permisos de archivo El primer argumento para chmod usa una sintaxis [ugoa]+/-[rwx] para describir cmo deberan cambiarse los permisos.

chmod a+w filename


Tambin puede ser una representacin numrica

chmod 775 filename

000 = 0 001 = 1 010 = 2 011 = 3 100 = 4 101 = 5 110 = 6 111 = 7

Usando el comando chmod

abreviacin
abreviacin interpretacin + = r w x

interpretacin
Agregar Remover Asigna Lectura Escritura Ejecucin

u
g o a

Usuario
Grupo Otros Todos

chgrp
Si deseas compartir un archivo con un grupo de personas, pero no con todo el mundo, debes hacer uso del grupo propietario de archivo y de los permisos de grupo. El grupo privado del creador no es usado para trabajar en colaboracin. Para compartir el archivo, se debe cambiar el propietario del archivo de grupo. Esto se realiza con el comando llamado chgrp.

chgrp
chgrp GROUP ARCHIVO... Cambio de propietario de ARCHIVO(s) a GRUPO El primer argumento especifica el nuevo grupo propietario de archivo, mientras que los argumentos subsecuentes listan los archivos cuyo propietario de grupo se va a cambiar. El propietario del grupo slo lo puede cambiar el usuario dueo del archivo, y el usuario debe ser un miembro del nuevo grupo de propietarios del archivo.

Cambio de los propietarios de archivos con el comando chown


chown USER FILE...
Cambie el propietario del (los) archivo(s) a USUARIO.

El argumento USER es el nombre del nuevo usuario del archivo y los argumentos siguientes son los nombres de los archivos a cambiar. Slo el usuario administrativo, root, puede usar chown,

Quin puede Modificar los Propietarios de archivos y los Permisos?


Operacin Usuarios Autorizados chmod

root y el propietario del archivo

chgrp

root y el propietario de archivo (nicamente los grupos subscritos)

chown

slo root

Utilitarios de Compresin Standard de Linux


compress (.Z)
Puede ser descomprimido con el comando uncompress No es usualmente instalado por defecto

gzip (.gz)
el ms versatil y ms comn utilitario de descompresin usado

bzip2 (.bz)
produce la mas compacta compresin de archivos ms uso intesivo de CPU

Archivadores de Archivos
El archivo contiene el directorio y sus archivos y subdirectorios subyacentes, empaquetados como un solo archivo. En Linux (y Unix), el comando ms comn para crear y extraer archivos es el comando tar. El archivo contiene el directorio y sus archivos y subdirectorios subyacentes, empaquetados como un solo archivo. A estos paquetes de archivos suele drseles la extensin del nombre de archivo .tar.

Comandos Bsicos Tar


Opcin Efecto

-c, --create

Crea un empaquetador de archivos

-x, --extract

Extraer un empaquetador de archivos List el contenido de un empaquetador de archivos

-t, --list

Opciones del comando tar


Opcin -C, --directory=DIR Efecto Cambia al directorio DIR

-P, --absolute-reference
-v, --verbose -Z, --compress -z, --gzip -j, --bzip2

sin / inicial desde los nombres de archivos


Lista los archivos procesados internally compress archive internamente gzip el archivo internamente bzip2 el archivo

Procesos

The ps command
El comando ps se utiliza comnmente para enumerar los procesos ejecutndose en un sistema. El comando ps, sin ningn argumento, muestra todos los procesos que se iniciaron desde una sola terminal.
alabarga@genome2:~$ ps PID TTY TIME CMD 22047 pts/0 00:00:00 bash 22472 pts/0 00:00:00 ps

The ps command
ps # Shows processes running by user ps -e # Shows all processes on system ps ax tree # Shows the child-parent hierarchy of all processes ps -o %t -p <pid> # Shows how long a particular process was running.

ps <pid> | cat ps aux | grep <user_name> # Shows all processes of one user

top

Los 5 estados del Proceso


Estado
Ejecutable (R) Dormido voluntario (interrumpible) (S)

Descripcin
Los procesos en un estado ejecutable son procesos que si tienen la oportunidad de acceder la CPU Por lo general, este es un proceso que no tiene nada que hacer hasta que suceda algo interesante. Un ejemplo clsico es el demonio de red httpd, el cual es un proceso que implementa un servidor de red. En medio de solicitudes de un cliente (navegador de red), el servidor no tiene nada que hacer, y elige irse a dormir. Cuando dos procesos tratan de acceder el mismo recurso de sistema al mismo tiempo. En estas situaciones, el kernel fuerza al proceso a dormir. Ocasionalmente, los usuarios deciden suspender procesos. Los procesos suspendidos no realizarn ninguna accin hasta no ser reiniciados por el usuario. En la shell bash, la secuencia de teclas CONTROL-Z puede utilizarse para suspender un proceso. cada proceso muriendo pasa a travs de un estado zombi transitorio. No obstante, en ocasiones, algunos se quedan en ese estado.

Dormido involuntario (no interrumpible) (D) Procesos detenidos (suspendidos) (T) Procesos zombi (Z)

Programacin de Procesos: nice y renice


Una tarea primaria del kernel de Linux es la programacin de procesos. Cada proceso tiene un valor de niceness que influye en su programacin. Los comandos nice y renice pueden cambiar la prioridad de programacin de un proceso. renice -n <priority_value> # Changes the priority value, which range from 1-19 # the higher the value the lower the priority, default is 10.

Programacin de Procesos
Cada proceso tiene dos valores que influyen en su programacin.
(dinamica) valor de prioridad del proceso (fija) valor del niceness del proceso

Prioridad de Procesos
El kernel da a cada proceso una cantidad de contadores. Cada vez que un proceso se programa en la CPU, entrega uno de sus contadores. Cuando decide qu proceso programar en la prxima CPU, el kernel escoge un proceso ejecutable con la mayora de contadores.

Proceso Niceness
Cada proceso tambin tiene un valor esttico conocido como su valor de niceness. El valor tiene un rango que va de -20 a 19 para cualquier proceso, iniciando en 0 por defecto. Aquellos con un mayor valor de niceness (>0)
obtienen menos contadores menos tiempo en la CPU

Aquellos con un valor niceness (< 0)


Obtienen mas contadores mas tiempo de CPU

Iniciar un comando con prioridad baja


El comando nice se utiliza para establecer un valor de niceness del proceso al iniciar el proceso.

El comando renice puede utilizarse para cambiar el niceness de un proceso en ejecucin.

Hacer procesos mucho ms ambiciosos


Los usuarios normales no pueden bajar el niceness de un proceso. Esto trae dos implicaciones:
Debido a que los procesos inician con un niceness de 0 por defecto, los usuarios normales no pueden hacer procesos "ambiciosos" con valores de niceness negativos. Una vez que a un proceso le han bajado el nice, los usuarios normales no pueden volverlo "normal" otra vez .

El administrador puede utilizar el comando renice como root para elevar el niceness
Usuario normal no puede restaurar dicha situacin.

Envio de seales
Las seales son una forma de bajo nivel de la comunicacin entre procesos que surgen de una variedad de recursos, incluyendo el kernel, la terminal y otros procesos. Las seales se distinguen por los nmeros de seales que tienen nombres y usos simblicos. Los nombres simblicos para los nombres de seales pueden listarse con el comando kill -l. El comando kill enva seales a otros procesos.

Envio de seales
Tras recibir una seal, un proceso puede ya sea, ignorarla, reaccionar de un modo especificado por defecto de kernel o implementar un manejador de seal personalizado. Convencionalmente, el nmero de seal 15 (SIGTERM) se utiliza para solicitar la terminacin de un proceso. La seal nmero 9 (SIGKILL) termina un proceso y no puede anularse. Los comandos pkill y killall pueden utilizarse para enviar seales a procesos especificados por nombre de comando o el usuario a quienes pertenecen.

Enviando Seales
El comando kill se utiliza para enviar seales a otros procesos.

Enviando Seales
kill <process-ID> # Kills a specific process kill -9 <process-ID> # does not give the process any time to perform cleanup procedures. kill -l # List all of the signals that can be sent to a proccess kill -s SIGSTOP <process-ID> # Suspend (put to sleep) a specific process kill -s SIGCONT <process-ID> # Resume (wake up) a specific process

Control de Trabajo
La shell bash permite a los comandos ejecutarse en segundo plano como "trabajos". El comando jobs listar todos los trabajos en segundo plano. La secuencia de teclas CONTROL-Z suspender y enviar a segundo plano el actual trabajo que se encuentra en primer plano. El comando bg reanuda un trabajo de segundo plano. El comando fg trae un trabajo de segundo plano a primer plano.

Ejecucin de comandos en segundo plano como trabajos


Cualquier comando que usted especifique puede tambin ejecutarse en el segundo plano,adjuntndole el signo (&) a la lnea de comandos. Slo los comandos de larga ejecucin que no requieren entradas desde el teclado y no generan grandes cantidades de salida son apropiados para un segundo plano.
find / -size +1024M > bigfiles.txt 2> /dev/null &

Administracin de mltiples trabajos


Iniciando multiples jobs en background

Visualizando jobs en background (comando jobs)

Traer un trabajo al primer plano con fg (comando fg)

Suspensin del trabajo de primer plano con CONTROLZ


La secuencia CONTROL-Z es un mtodo para suspender procesos.

Reiniciar un trabajo detenido en el segundo plano


Un trabajo detenido puede reiniciarse en el segundo plano con el comando incorporado bg.

Matar Trabajos (Killing Jobs)


El comando kill, utilizado para entregar seales para procesos se implementa como un comando incorporado de shell.

Programacin de Taeas retrasadas: at


El comando at puede someter comandos para que se ejecuten ms tarde. El comando batch puede emitir comandos para que se ejecuten cuando la carga de las mquinas sea baja. Los comandos pueden escribirse directamente o someterse como un script.

El demonio atd
El demonio atd le permite a los usuarios someter trabajos para ser realizados ms tarde Para utilizar el demonio atd, ste debe estar ejecutndose. Los usuarios pueden confirmar que atd se est ejecutando simplemente al examinar la lista de procesos en ejecucin

Programacin de Taeas periodicas: cron


La utilidad cron se utiliza para programar tareas recurrentes. El comando crontab provee un frontend para editar archivos crontab. El archivo crontab utiliza 5 campos para especificar la informacin de temporizacin. la stdout de trabajos cron se enva por correo al usuario.

The cron Service


El demonio crond es el demonio que realiza tareas peridicamente en nombre del sistema o de usuarios individuales. El demonio suele iniciarse cuando el sistema arranca, por lo tanto, la mayora de usuarios lo pueden ignorar. Al listar todos los procesos y buscar crond puede confirmar si el demonio crond est en ejecucin.

Usando el comando crontab


Los usuarios rara vez administran su archivo crontab directamente (o incluso saben dnde se almacena), en cambio, utilizan el comando crontab para editar la lista o quitarla.
crontab {-e | -l | -r} crontab FILE

crontab -e sudo /etc/init.d/cron restart /var/spool/cron/crontabs/

Sintaxis crontab

Networking

Salida de comando netstat

Determinar tu(s) direccin(es) IP: /sbin/ifconfig


El comando ifconfig muestra la configuracin de todas las interfaces de red activas. Los usuarios estndar pueden usar el comando para ver informacin de configuracin de interfaz, utilizando una referencia absoluta.

Shell scripts

Shell Scripts
A shell script is a text file with a list of commands inside. Shell scripts are good for automating tasks you use often, or running batch jobs. Enter the following in a new file, script.sh:

echo Date and time is: date echo Your current directory is: pwd
Run the script like this: sh script.sh

More Shell Scripts


A more advanced shell script utilizing a loop:

for num in 1 2 3 do echo We are on $num done

More Shell Scripts


if [ $# -gt 1 ] then seqfile="$1" destdir="$2 else echo "Use: fsplit SEQFILE DESTDIR" echo "Splits fasta file SEQFILE into separate files in DESTDIR folder" exit fi

Linux training online


http://manuals.bioinformatics.ucr.edu/home/linux-basics http://www.codecoffee.com/tipsforlinux/index-linux.html

Ejercicio 1
Download proteome of Halobacterium spec. wget ftp://ftp.ncbi.nih.gov/genbank/genomes/Bacteria/Halobac terium_sp_uid217/AE004437.faa grep '^>' AE004437.faa count egrep 'W.H..H{1,2}' AE004437.faa --count awk --posix -v RS='>' '/W.H..(H){1,2}/ { print ">" $0;}' AE004437.faa | less

Ejercicio 2
for chr in `seq 1 22` X Y do wget -O - -q http://hgdownload.cse.ucsc.edu/goldenPath/ hg19/chromosomes/chr1.fa.gz | gunzip -c >> hg19.fa done

Ejercicio 3
# An example database wget ftp://ftp.ncbi.nih.gov/genbank/genomes/Bacteria/Halobacterium_sp_uid217/AE004437.faa # Prepare dababase for Blast search formatdb -i AE004437.faa -p T -o # Generate an example query awk --posix -v RS='>' '/WWW/ { print ">" $0;}' AE004437.faa \ > blast_query_2seqs.fasta # Run blast with tabular output (extract the hit only) blastall -p blastp -i blast_query_2seqs.fasta -d AE004437.faa -m 8 -e 1e-5 | \ awk '{print $2}' | sort | uniq \ > ids_of_4hits # Get the fasta file for hits fastacmd -d AE004437.faa -i ids_of_4hits > hits.fasta

Ejercicio 4
#!/bin/sh # split fasta file into separate sequence files # if [ $# -gt 1 ] then seqfile="$1" destdir="$2 else echo "Use: fsplit SEQFILE DESTDIR" echo "Splits fasta file SEQFILE into separate files in DESTDIR folder" exit fi mkdir $2 csplit -f $destdir/sequence $seqfile "%^>%" "/^>/" "{*}" -s

More commands
for i in *.input; do mv $i ${i/\.old/\.new}; done scp file.name user@remote_host:~/dir/newfile.name

find /share/media/mp3/ -type f -name "*.mp3" -print0 | xargs -0 -r -I file cp -v -p file --targetdirectory=/bakup/iscsi/mp3

Packages

Installing packages
apt-cache search phylip # searches for application "phylip" from command line apt-cache show phylip # provides description of the package apt-get install phylip apt-get update # do once a month do update Debian packages apt-get upgrade -u # to upgrade after update

aptitude
El nuevo sistema de gestin de paquetes para Debian/Ubuntu se llama aptitude Las operaciones realizadas quedan registradas en /var/log/aptitude