0% encontró este documento útil (0 votos)
148 vistas64 páginas

Curso Linux

El documento describe la estructura de directorios y el sistema de archivos en Linux. La estructura de directorios es jerárquica con el directorio raíz "/" y directorios importantes como "/home", "/usr", "/bin", "/etc". El sistema de archivos organiza los archivos usando inodos y tablas que apuntan a bloques de datos, y soporta diferentes tipos como ext2, ext3, ext4, ReiserFS y swap.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
148 vistas64 páginas

Curso Linux

El documento describe la estructura de directorios y el sistema de archivos en Linux. La estructura de directorios es jerárquica con el directorio raíz "/" y directorios importantes como "/home", "/usr", "/bin", "/etc". El sistema de archivos organiza los archivos usando inodos y tablas que apuntan a bloques de datos, y soporta diferentes tipos como ext2, ext3, ext4, ReiserFS y swap.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

HISTORIA DE LINUX (I)

[Link]
SISTEMA DE ARCHIVOS (II)
DIRECTORIOS
Un sistema de ficheros es el modo en que el sistema operativo organiza los ficheros en el
disco duro, gestionndolo de manera que los datos estn de forma estructurada y sin
errores.
La estructura de ficheros de Linux es una estructura jerrquica en forma de rbol
invertido, donde el directorio principal (directorio raz) es el directorio /, del que cuelga
toda la estructura del sistema:

DIRECTORIOS MAS IMPORTANTES


Veamos algunos de los directorios ms importantes de Linux y lo que contienen:
/ es el directorio raz. De aqu cuelgan todos los directorios del sistema. Dentro del
directorio raz encontramos varios subdirectorios importantes:
/bin contiene ficheros de comandos ejecutables utilizables por todos los usuarios.
Aqu tenemos los programas que pueden lanzar todos los usuarios del
sistema.
/sbin es para ejecutables de uso exclusivo por el superusuario (root). Son los
necesarios para arrancar y montar el directorio /usr.
/home es un directorio donde se encuentran los directorios personales de los

usuarios del sistema.


/usr contiene utilidades y programas generales de usuario:
/usr/bin contiene programas de uso general.
/usr/share contiene archivos compartibles, independientes de la
arquitectura.
/usr/share/doc contiene cierta documentacin del sistema.
/usr/share/man contiene los manuales.
/usr/etc contiene archivos de configuracin de uso global.
/usr/include contiene las cabeceras de C y C++.
/usr/lib contiene las bibliotecas de nuestros programas.
/usr/sbin contiene los programas de administracin del sistema.
/usr/src contiene los cdigos fuente de nuestros programas.
/dev contiene archivos especiales de bloques y caracteres asociados a dispositivos
hardware. Aqu encontramos todos los dispositivos fsicos del sistema (todo
nuestro hardware).
/lib contiene libreras y compiladores del sistema. Contiene las bibliotecas
necesarias para que se ejecuten los programas que tenemos en /bin y /sbin
nicamente.
/proc contiene los archivos que reciben o envan informacin al ncleo. No
deberamos modificar el contenido de este directorio.
/etc contiene los ficheros de configuracin y utilidades para la administracin.
/var contiene ficheros para el administrador. Este directorio contiene informacin
variable, como registros, datos de los servidores, etc.
/boot contiene los archivos de configuracin del arranque del sistema, como por
ejemplo GRUB.
/media contiene todas las unidades fsicas que tenemos montadas: discos duros,
unidades de DVD, pen drives, etc.
/opt sirve para admitir ficheros nuevos creados tras la modificacin del sistema.
Es un punto de montaje desde el que se instalan los paquetes de aplicacin
adicionales. Podemos usarla para instalar aplicaciones que no vienen en los
repositorios, por ejemplo, aquellas que compilamos a mano.
/tmp es donde se almacenan los archivos temporales.
Cabe destacar que stas son las ubicaciones de los directorios en Fedora. Para otras
distribuciones algunos directorios pueden tener un nombre diferente.
Adems de los directorios que acabamos de ver, hay 2 directorios especiales:
Directorio actual (.): es un directorio especial que hace referencia al directorio en el que
estamos. Si referenciamos al directorio . nos estaremos refiriendo al directorio
actual.
Directorio padre (..): es un directorio especial que hace referencia al directorio padre del
directorio en el que estamos. Si referenciamos al directorio .. nos estaremos
refiriendo al directorio padre del actual. El nico directorio que no tiene directorio
padre es el directorio raz /.

Estos directorios son muy tiles a la hora de hacer referencia a rutas relativas.
ALMACENAMIENTO DE DATOS
El sistema de ficheros de Linux permite al usuario crear, borrar y acceder a los ficheros sin
necesidad de saber el lugar exacto en el que se encuentran.
En Linux no existen unidades fsicas, sino ficheros que hacen referencia a ellas, integrados
en la estructura de ficheros como cualquier otro.
El sistema de ficheros de Linux consta de varias partes importantes:
Superbloque
Tabla de inodos
Bloques de datos
En Linux cada bloque es de 512 bytes o de mltiplos de 512. Al igual que el cluster era la
estrella del sistema de ficheros FAT, en ext3 es el bloque.
En la siguiente tabla podemos ver un esquema del sistema de ficheros de Linux:

El bloque de carga o bloque cero de cada sistema est reservado para almacenar un
programa que utiliza el sistema para gestionar el resto de las partes del sistema de ficheros.
El superbloque o bloque uno contiene la informacin sobre el sistema de ficheros.
La tabla de inodos es el equivalente a las entradas de la FAT. Por cada fichero, Linux tiene
asociado un elemento en esta tabla que contiene un nmero. Este nmero identifica la
ubicacin del archivo dentro del rea de datos.
Cada inodo contiene informacin de un fichero o directorio. En concreto, en un inodo se
guarda la siguiente informacin:
El identificador de dispositivo del dispositivo que alberga al sistema de archivos.
El nmero de inodo que identifica al archivo dentro del sistema de archivos.
La longitud del archivo en bytes.
El identificador de usuario del creador o un propietario del archivo con derechos
diferenciados.
El identificador de grupo de un grupo de usuarios con derechos diferenciados.
El modo de acceso: capacidad de leer, escribir, y ejecutar el archivo por parte del
propietario, del grupo y de otros usuarios.
Las marcas de tiempo con las fechas de ltima modificacin (mtime), acceso (atime) y
de alteracin del propio inodo (ctime).
El nmero de enlaces (hard links), esto es, el nmero de nombres (entradas de
directorio) asociados con este inodo. Si mltiples nombres estn enlazados, o sea,
asociados a un mismo inodo (lo que se denomina enlaces duros o simplemente

enlaces) entonces todos los nombres son equivalentes entre s. El que fue creado en
primer lugar no tiene ningn estatus especial, al contrario de lo que ocurre con los
enlaces simblicos o con los denominados accesos directos de Windows, donde
todos dependen del nombre original. El nmero de enlaces se emplea por el sistema
operativo para eliminar el archivo del sistema de ficheros, tanto el inodo como el
contenido, cuando se han borrado todos los enlaces y el contador queda a cero
El rea de datos ocupa el resto del disco y es equivalente a la zona de datos en FAT. En
esta zona, como su nombre indica, estn almacenados los ficheros y directorios de nuestro
sistema.
Un directorio no es ms que un fichero que contiene los nombres de los ficheros (o
directorios) que contiene junto con el nmero del inodo que contiene la informacin de
cada uno de ellos.
TIPOS DE SISTEMAS DE ARCHIVOS
Linux soporta gran variedad de sistemas de ficheros, desde sistemas basados en discos, como
pueden ser ext2, ext3, ReiserFS, XFS, JFS, UFS, ISO9660, FAT, FAT32 o NTFS, a
sistemas de ficheros que sirven para comunicar equipos en la red de diferentes sistemas
operativos, como NFS (utilizado para compartir recursos entre equipos Linux) o SMB (para
compartir recursos entre mquinas Linux y Windows).
Los sistemas de ficheros indican el modo en que se gestionan los ficheros dentro de las
particiones. Segn su complejidad, tienen caractersticas como previsin de apagones,
posibilidad de recuperar datos, indexacin para bsquedas rpidas, reduccin de la
fragmentacin para agilizar la lectura de los datos, etc. Hay varios tipos, normalmente ligados
a sistemas operativos concretos. A continuacin se enumeran los ms representativos:
ext2: Hasta hace poco era el sistema estndar de Linux. Tiene una fragmentacin muy
baja, aunque es algo lento manejando archivos de gran tamao. Fue la continuacin
del sistema de ficheros ext, implementado en 1992 e integrado en Linux 0.96. Las
principales ventajas que tena sobre ext eran las siguientes:
Compatible con sistemas de ficheros grandes, admitiendo particiones de disco de
hasta 4TB y ficheros de hasta 2GB de tamao.
Proporciona nombres de ficheros largos, de hasta 255 caracteres.
Tiene una gran estabilidad.
Actualizacin.
ext3: Es la versin mejorada de ext2, con previsin de prdida de datos por fallos del disco
o apagones. En contraprestaci, es totalmente imposible recuperar datos borrados. Es
compatible con el sistema de ficheros ext2. Actualmente es el ms difundido dentro
de la comunidad GNU/Linux y es considerado el estndar. Sus ventajas frente a ext2
son:
Actualizacin. Debido a que los dos sistemas comparten el mismo formato, es
posible llevar a cabo una actualizacin a ext3, incluso aunque el sistema ext2
est montado.
Fiabilidad y mantenimiento.
ext4: Es la ltima versin de la familia de sistemas de ficheros ext. Sus principales ventajas
radican en su eficiencia (menor uso de CPU, mejoras en la velocidad de lectura y
escritura) y en la ampliacin de los lmites de tamao de los ficheros, ahora de hasta

16TB, y del sistema de ficheros, que puede llegar a los 1024PB (PetaBytes).
ReiserFS: Es el sistema de ficheros de ltima generacin para Linux. Organiza los ficheros
de tal modo que se agilizan mucho las operaciones con estos. El problema de ser tan
actual es que muchas herramientas (por ejemplo, para recuperar datos) no lo soportan.
swap: Es el sistema de ficheros para la particin de intercambio de Linux. Todos los
sistemas Linux necesitan una particin de este tipo para cargar los programas y no
saturar la memoria RAM cuando se excede su capacidad. En Windows, esto se hace
con el archivo [Link] en la misma particin de trabajo, con los problemas que
esto conlleva.
Adems de estos sistemas de ficheros, Linux tambin ofrece soporte para sistemas de ficheros
de Windows, como FAT, FAT32 y NTFS. Tanto para FAT como para FAT32, Linux tiene
soporte completo y estable de escritura y lectura, mientras que para NTFS, y con las ltimas
versiones del kernel, solo se puede acceder de manera estable en modo lectura. En modo
escritura todava est en fase experimental y no es estable.

NAVEGANDO EN DIRECTORIOS (III)


COMODINES
Una caracterstica importante de la mayora de los intrpretes de comandos en Unix es la
capacidad para referirse a ms de un archivo usando expresiones regulares. En su forma
ms simple, esto consiste en la utilizacin de los llamados comodines que permiten
referirse a, por ejemplo, todos los archivos cuyo nombre contiene una determinada
secuencia de caracteres.
El comodn * hace referencia cualquier cadena de caracteres en el nombre del archivo.
Cuando se usa el carcter * para referirse al nombre de un archivo, el intrprete de
comandos lo sustituye por todas las combinaciones posibles provenientes de los archivos en
el directorio al cual nos estamos refiriendo.
Veamos un ejemplo rpido. Supongamos que diego tiene los archivos hugo, paco y luis en
el directorio actual.
/home/diego$ ls
hugo luis paco
Para listar todos los archivos con la letra o en su nombre, usamos la orden:
/home/diego$ ls *o*
hugo paco
Como podemos ver, el comodn * ha sido sustituido con todas las combinaciones
posibles que coincidan de entre los archivos del directorio actual.
El uso de * solo, hace referencia a todos los archivos, puesto que todos los caracteres
coinciden con el comodn.
/home/diego$ ls *
hugo luis paco
Veamos algunos otros ejemplos:
/home/diego$ ls h*
hugo
/home/diego$ ls *is
luis
/home/diego$ ls *u*
hugo luis
/home/diego$ ls p*o
paco
El proceso de la sustitucin de caracteres como * en nombres de archivos es llamado
expansin de comodines y es efectuado por el intrprete de comandos. Esto es
importante: los comandos, como ls, nunca ven el * en su lista de parmetros. Es el

intrprete quien expande los comodines para incluir todos los nombres de archivos que se
adaptan. Por lo tanto la orden:

/home/diego$ ls *o*
es expandida para obtener
/home/diego$ ls hugo paco
Otro carcter comodn es ?. Este carcter comodn slo expande un nico carcter. Luego
ls ? mostrar todos los nombres de archivos con un carcter de longitud, y ls termca?,
por ejemplo, mostrar termcap pero no [Link]. Aqu tenemos otro ejemplo:
/home/diego$ ls hu?o
hugo
/home/diego$ ls p??o
paco
/home/diego$ ls ???s
luis
Como podemos ver, los caracteres comodn nos permiten referirse a ms de un archivo a la
vez. En el sumario de comandos bsicos dijimos que cp y mv pueden copiar o mover
mltiples archivos de una vez. Por ejemplo:
/home/diego$ cp /etc/s* /home/diego
copiar todos los archivos de /etc que comiencen con s al directorio /home/diego.
Los comodines * y ? no coincidirn con nombres de archivos que comiencen con un
punto (.). Estos archivos son tratados como ocultos. Los archivos de este tipo no son
mostrados en un listado normal de ls y no son afectados por el uso de * y ?.
Por ejemplo, ya hemos mencionado que cada directorio tiene dos entradas especiales: .,
que hace referencia al directorio actual, y .., que se refiere al directorio padre. Como ya
hemos visto, al usar ls esas dos entradas no se muestran:
/home/diego$ ls
hugo luis paco
Si usamos el parmetro -a con ls podremos ver nombres de archivos que comienzan con
.. Observemos:
/home/diego$ ls -a
. .. .bash_profile .bashrc hugo luis paco

Ahora podemos ver las dos entradas especiales, . y .., as como otros dos archivos
ocultos: .bash_profile y .bashrc.
Estos dos archivos son usados en el arranque por el intrprete de comandos bash cuando el
usuario realiza el login.
PATH ABSOLUTOS Y PATH RELATIVOS
Supongamos que dentro de la particin de datos tenemos un archivo llamado [Link].
Para indicar la ruta a este archivo se puede hacer de varias formas. Por ejemplo, la ruta
absoluta a ese archivo es la siguiente:
/media/datos/[Link]
Las rutas absolutas se caracterizan por empezar SIEMPRE desde la raz, es decir la /, y
contener todos los directorios que hay desde la raz hasta el archivo o directorio que
queremos indicar, slo es posible escribir de una forma una ruta absoluta. Todas las rutas
siguientes son rutas absolutas por que empiezan desde la raz.
/media/
/media/datos/
/etc/
/home/aupatic/
/media
/media/datos
/etc
/home/aupatic
/home/aupatic/[Link]
Cuando tienen la / al final significa que la ruta es de un directorio, aunque no es necesaria
la /. Cuando la ruta es de un archivo NUNCA se pone la / al final.
En cambio las rutas relativas NUNCA empiezan por la / y puede haber varias rutas
relativas para el mismo archivo o directorio que queremos indicar. Esto es as por que la
ruta relativa depende del directorio en el que se est trabajando. Por ejemplo si estamos en
el mismo directorio que el archivo [Link], la ruta relativa es simplemente el nombre
del archivo:
[Link]
En cambio, si estamos dentro del directorio media, pero fuera del directorio datos, la ruta
relativa se escribira:
datos/[Link]
Si estamos en la raz del sistema de archivos:

media/datos/[Link]
COMANDO CD
Este comando proviene del abreviativo en ingles Change Directory, el cual nos permite
cambiar entre directorios en Linux.
Podemos utilizar tanto el path absoluto, como el path relativo, como por ejemplo
Ejemplos de comando CD
Hacer cd con path absoluto.

Para el caso que quisiramos realiza acceso por path relativo.

En caso que quisiramos realizar accesos a directorios especiales .. y .

COMANDO LS
El comando ls, proviene del abreviativo en ingles list. El cual nos sirve para listar el
contenido que existe en una o mas directorios.
La salida estndar del comando, es similar a la siguiente.

el comando ls, tiene opciones que nos son de bastante utilidad, como las presentadas a
continuacin.
l: Lista archivos, con informacin. Sobre: Permisos de Usuario, Cantidad de
archivos archivos dentro del directorio, Usuario dueo, Grupo dueo, Tamao
del archivo, Fecha de Creacin, Hora y el archivo.

a: Muestra archivos ocultos y directorio padre y local.

h: Muestra informacin de los archivos, de manera humanamente entendible,


mostrando el tamao en MB, GB, KB, etc. Siempre debe estar acompaado de la
opcin l.

Pueden acceder a mas informacin sobre el comando ls, con la opcin --help
COMANDO FIND

El comando find, es el encargado de buscar de manera recursiva archivos dentro de todo el


disco del sistema operativo, algo similar a el buscador de Windows.
La utilizacin de este comando, es sencilla, ya que la manera que tiene de funcionar es la
siguiente.
find Donde Buscar -Opciones
La opcin mas utilizada en -name, el cual indica el nombre del archivo a buscar. Esta
bsqueda la esta realizando sobre el directorio raz.

Cuando tenemos muchos archivos en un directorio donde estamos parados, por ejemplo en
/etc y queremos buscar un archivo llamado service dentro de este, podemos ejecutar la
siguiente sentencia find.

Tambin, si nosotros queremos buscar el mismo archivo en /etc, pero sin estar dentro de
/etc, podemos ejecutar el siguiente comando.

Si nosotros quisiramos buscar el mismo archivo, pero si no tenemos el nombre completo,


se pueden utilizar comodines, pero el nombre debe ser tratado entre comillas .

COMANDO LOCATE
El comando locate, es en reemplazo al comando find, este realiza una bsqueda mucho mas
rpida que find, debido a que este comando realiza la bsqueda sobre una base de datos que
esta ubicada en /var/lib/mlocate/[Link], la cual debe actualizarse con el comando
updatedb. Por lo cual busca dentro de la base de datos, por lo cual la salida se puede
concatenar por ejemplo con grep para buscar de manera correcta.

COMANDO FILE

El comando file sirve para determinar el tipo de archivo.


Con este comando podemos comprobar fcilmente el tipo de fichero, esto es til porque no
tiene extensin, que por algn motivo creemos no es la correcta o porque desconfiamos por
alguna razn. Y entre otras cosas muestra la codificacin de caracteres de los archivos de
texto, srt, etc.

DISCOS Y PUNTOS DE MONTAJES (IV)


COMANDO DF
El comando df, nos sirve para determinar cuanto espacio en disco tenemos disponibles,
como ejemplo una salida del comando.

Las columnas presentadas en la salida de este comando son las siguientes.


Nombre de campo
Filesystem
Size
Used
Avail
Use%
Mounted on

Descripcin
Indica el Filesystem que esta montado
Tamao total de espacio utilizable en el sistema de archivos
Cantidad de espacio utilizado
Cantidad de espacio disponible para utilizar
Porcentaje de uso del disco
Punto de montaje

COMANDO DU
Este comando informa al usuario de la cantidad de almacenamiento utilizado por los
archivos especificados, posee varias opciones, su sintaxis es la siguiente:
du [opciones] [archivo...]
Sus opciones ms significativas son:
-s: Muestra nicamente los tamaos de los archivos especificados en la lnea de comandos.
-h: Muestra los tamaos de archivo en un formato ms legible.
-c: Muestra en pantalla el espacio total ocupado por los archivos especificados.
-x: Omite en el conteo aquellos directorios que pertenezcan a otro sistema de archivos.

COMANDO MOUNT
Cuando conectamos una unidad de almacenamiento o un lector de DVD, el sistema tiene
que crearle lo que se denomina un punto de montaje para poderlo utilizar, este punto de
montaje en casos de discos duros y pendrives, suele ser una carpeta que creamos
manualmente en el sistema como era el caso hace aos o nos lo crea l mismo
automticamente en una particin denominada /media en distribuciones basadas en Ubuntu,
que por cuestiones as tienen fama de ser ms user friendly y por tanto son denominadas
ms bsicas.
mount -t (Tipo de FS) /filesystem /punto_de_montaje

El uso primordial que se le dar al comando mount en este curso, es de verificar que los FS
se encuentre montados.

Para realizar el montaje de un filesystem, en el caso particilar de este ejemplo se montan 3


FS, los cuales son /dev/sdb1 (ext4) montado en /root/disco1, /dev/sdb2 (ext3) montado en
/disco2 y /dev/sde1 (xfs) montado en /var/disco3.

Tambin, se pueden montar dispositivos de imgenes ISO, sin necesidad de tener un


programa en especial para eso, en este caso particular se debe utilizar la opcin o loop.

SISTEMA DE ARCHIVOS EN PROFUNDIDAD (V)


TIPOS DE ARCHIVOS EN LINUX
En Linux existen bsicamente 5 tipos de archivos:
Archivos ordinarios. Contienen la informacin con la que trabaja cada usuario.
Enlaces fsicos o duros (hard links). No es especficamente una clase de archivo sino
un segundo nombre que se le da a un archivo. Supn que dos usuarios necesitan
compartir informacin de un mismo archivo. Si cada uno tuviera una copia del
archivo se soluciona el problema, pero las modificaciones que realice un usuario no
las vera el otro. Sin embargo, si creamos un enlace duro al archivo para cada
usuario cada vez que uno de ellos modifique cualquier cosa en el archivo, el otro lo
podr ver puesto que realmente estn viendo y modificando el mismo archivo. El
enlace sirve para localizar el archivo en su ubicacin actual, pero no es el archivo
real, sino un segundo nombre que se le da. De esta forma, con tener un solo archivo
real este se podr utilizar por todos los usuarios que lo necesiten mediante estos
enlaces duros sin necesidad de duplicar o triplicar el archivo.
Enlaces simblicos. Tambin se utilizan para asignar un segundo nombre a un archivo.
La diferencia con los enlaces duros es que los simblicos solamente hacen
referencia al nombre del archivo original, mientras que los duros hacen referencia al
inodo en el que estn situados los datos del archivo original. De esta manera, si
tenemos un enlace simblico y borramos el archivo original perderemos los datos,
mientras que si tenemos un enlace duro los datos no se borrarn hasta que se hayan
borrado todos y cada uno de los enlaces duros que existen hacia esos datos en el
sistema de ficheros. El conteo del nmero de enlaces duros que tiene un fichero se
realiza, como ya vimos, en el inodo correspondiente a los datos del fichero.
Directorios. Son archivos especiales que contienen referencias a otros archivos o
directorios.
Archivos especiales. Suelen representar dispositivos fsicos, como unidades de
almacenamiento, impresoras, terminales, etc. En Linux, todo dispositivo fsico que se
conecte al ordenador est asociado a un archivo. Linux trata los archivos especiales como
archivos ordinarios

COMANDO MKDIR
Este comando es bastante simple; su finalidad es la creacin de directorios, y su sintaxis es
as:

mkdir [opciones] directorio...


Sus opciones son las que siguen:
-m modo: Establece los permisos de los directorios creados.
-p: Crea los directorios padre que falten para cada argumento directorio
Para crear un directorio en directorio donde nos encontramos, se realiza como en el ejemplo
mkdir directorio

Para crear un directorio dentro de otro directorio ya existente, se realiza como el ejemplo
mkdir directorio/test1

Para crear un rbol de directorios no existente, se debe utilizar la opcin p, se realiza como
el ejemplo mkdir -p /root/dir1/dir2/dir3/dir4

COMANDO CP
Se utiliza para copiar archivos, su sintaxis es la siguiente:
cp [opciones] archivo-origen directorio-destino
cp [opciones] archivos-origen... directorio-destino
Entre las opciones ms relevantes, se tienen:
-f: Borrar los archivos de destino ya existentes.
-d: Copiar los enlaces simblicos tal cual son, en lugar de copiar los archivos a los que
apuntan.
-p: Preservar los permisos, el usuario y el grupo del archivo a copiar.
-R: Copiar directorios recursivamente.
-a: Equivalente a utilizar las opciones -dpR.
-v: Da informacin en pantalla sobre los archivos que se van copiando.
En caso que queramos sacar una copia de un archivo de manera local, con el fin de obtener
un respaldo, se debe realizar como el ejemplo cp [Link] [Link].1

En caso que queramos copiar varios archivos al directorio /tmp, debe entregar la lista
completa, de la siguiente manera: cp -fv arch2 arch3 arch10 /tmp. Adems con la opcin
fv (realiza la copia de manera forzada y muestra lo que va copiando).

En caso que queramos copiar un directorio completo, con todos sus archivos, por ejemplo
se copiara el directorio /root/test a /etc, se hara de manera recursiva y que muestre. Se debe
realizar de la siguiente manera: cp -fRv test /etc/ o cp -fRv /root/test /etc/

COMANDO MV
Este comando se usa tanto para mover archivos, como para renombrarlos (que, al fin de
cuentas, es una manera de mover archivos); su sintaxis es la siguiente:
mv [opcin...] origen destino
mv [opcin...] origen... destino
Si el ltimo argumento, destino, es un directorio existente, mv mueve cada uno de los otros
archivos a destino.
Algunas opciones de este comando son:
-f: Borrar los archivos de destino existentes sin preguntar al usuario.
-i: Lo contrario de -f; pregunta por cada archivo a sobrescribir antes de hacerlo.
-v: Muestra el nombre de cada archivo a ser movido.
Al igual que el comando cp, la manera de realizar el movimiento de los archivos, es muy
similar en cuanto su sintaxis.
Como ejemplo, se mover el directorio /root/test a /tmp, con como se muestra en ele
ejemplo, mv -fv test /tmp/

COMANDO RM
He aqu un comando peligroso, rm se utiliza para borrar archivos o directorios, su sintaxis
es:
rm [opciones] archivo...
Se debe siempre pensar dos veces lo que se est haciendo antes de ejecutar este comando.
Quizs esto parezca una advertencia para tontos, pero ms an cuando se est
administrando un equipo que da servicios a varios usuarios, un teclazo en falso, y
fcilmente se pierden datos importantes.
Sus opciones ms utilizadas son:
-f: No imprimir mensajes de error, ni pedir al usuario una confirmacin por cada archivo
que se vaya a borrar.

-r: Borrar los contenidos de directorios recursivamente.


-v: Muestra el nombre de cada archivo eliminado.
El argumento archivo puede ser tanto un nombre de archivo, como una expresin regular.
Como ejemplos para rm, tenemos los siguientes
Para borrar un archivo en el directorio actual llamado arch2 y arch3, de /tmp, de debe
ejecutar el comando, como sigue: rm arch2 arch3. pedir confirmacin, ya que el comando
rm tiene un alias hacia rm -i

Para eliminar archivos de manera forzada, se debe utilizar la opcin f, as como se muestra
de la siguiente manera: rm -f arch10. La opcin f suprime la opcin i de alias y elimina
el archivo, sin preguntar nada

El comando rm no permite borrar directorios directamente. Pero existen opciones que


pueden ayudar para eliminarlo sin confirmacin. Cuidado con el uso de estas opciones. Las
cuales son Rf, eliminar completamente el directorio sin importar su contenido, ni los
directorios que estn dentro.
Como ejemplo, se eliminara el directorio /tmp/test. Como el siguiente comando rm -fRv
/tmp/test

COMANDO LN
Este comando sirve para establecer enlaces entre archivos. Un enlace puede ser rgido o simblico.
El primer tipo es simplemente una forma de dar otro nombre a un archivo. Por ejemplo teniendo el
archivo /etc/passwd, se puede hacer un enlace y tener el nuevo nombre en /home/usuario/claves, y
ambos nombres de archivos refirindose al mismo archivo. El segundo tipo es parecido al primero,
pero se pueden enlazar directorios, y adems de diferentes sistemas de archivos. Este tipo de enlace
es el que ms se utiliza. La sintaxis del comando ln es:
ln [opciones] origen [destino]
ln [opciones] origen... directorio
Sus opciones ms importantes son las siguientes:
-d: Permite al super-usuario hacer enlaces rgidos a directorios
-s: Crear enlace simblico.
-f: Borrar los archivos de destino que ya existen.
Para el caso del ejemplo anterior, se debera ejecutar:
ln -s /etc/passwd /home/usuario/claves
Cuando se ejecuta ls -l en un directorio donde hay un enlace simblico, ste se muestra de la
siguiente manera:
usuario@maquina:~/$ ls -l claves
lrwxrwxrwx 1 usuario usuario 11 Apr 8 13:33 claves -> /etc/passwd
La l al comienzo de la lnea especifica el tipo de archivo listado, en este caso, un link.

USUARIOS Y PERMISOS (VI)

EXPLICACIN DE USUARIOS
Sabemos que Linux es un sistema multiusuario por lo que se hace necesario la
administracin de los distintos usuarios que van a hacer uso de los recursos del sistema.
Pues bien, en la mayora de los diferentes sistemas operativos multiusuario podemos
encontrar al menos 3 tipos de usuarios. estos son:
Usuarios Normales: con ms o menos privilegios que harn uso de los recursos del
sistema. Simplemente deben poder usar algunos programas y disponer de un directorio de
trabajo.
Usuarios de Sistema: son aquellos encargados de los demonios del sistema, recordemos
que para Linux todo es un fichero, el cual tiene un dueo y ese dueo tiene privilegios
sobre l. As, es necesario que algn usuario del sistema posea los procesos de los
demonios. Resumiendo, es necesario que para algunos servicios del sistema se creen
usuarios. Como puede ser el caso de Mail, irc, etc. estos usuarios tendrn los privilegios
necesarios para poder hacer su tarea. Gestionar estos usuarios es de gran importancia. No
obstante, este tipo de usuarios no necesita que se le asigne un shell, puesto que simplemente
poseern los demonios, pero no ser necesario que hagan login en el sistema.
ROOT: Este es el "Todo Poderoso" de Linux. Cuidado con lo que se hace al entrar en el
sistema como root. l lo puede todo, en principio no hay restricciones para L (aunque
algunos programas nos avisarn de que estamos haciendo una autntica burrada desde el
punto de vista de la seguridad).
Bueno, antes que se aburran, con algo de teora, vayamos al grano. Para crear un nuevo
usuario en el sistema utilizaremos los siguientes comandos: useradd y passwd. Veamos
como crear un usuario:
Creamos el usuario "miusuario"
# useradd miusuario
Asignamos una contrasea al usuario "miusuario"
# passwd miusuario
Despus de ejecutar "passwd" pedir que se ingrese dos veces la contrasea. Ojo siempre
que crees un usuario desde la lnea de comandos no debes olvidar asignarle una contrasea,
pues sino no podrs utilizar el usuario creado.
Por otra parte, Linux al crear un usuario, crea por defecto un grupo con el nombre del
usuario (en nuestro caso sera "miusuario"). Si queremos asignar un grupo diferente,
hacemos lo siguiente:
Si no existe el grupo, lo creamos de la siguiente forma:
# groupadd migrupo

Creamos al usuario, desactivando el grupo que se crea por defecto y asignndole el grupo
"migrupo":
# useradd -n -g migrupo miusuario
Asignamos una contrasea al usuario "miusuario"
# passwd miusuario

Explicacin de Permisos
En Linux, todo archivo y directorio tiene tres niveles de permisos de acceso: los que se
aplican al propietario del archivo, los que se aplican al grupo que tiene el archivo y los que
se aplican a todos los usuarios del sistema. Podemos ver los permisos cuando listamos un
directorio con ls -l:
$> ls -l
-rwxrwxr-- 1 sergio ventas 9090 sep 9 14:10 presentacion
-rw-rw-r-- 1 sergio sergio 2825990 sep 7 16:36 reporte1
drwxr-xr-x 2 sergio sergio 4096 ago 27 11:41 videos
Veamos por partes el listado, tomando como ejemplo la primera lnea. La primera columna
(-rwxrwxr--) es el tipo de archivo y sus permisos, la siguiente columna (1) es el nmero de
enlaces al archivo, la tercera columna (sergio) representa al propietario del archivo, la
cuarta columna (ventas) representa al grupo al que pertence al archivo y las siguientes son
el tamao, la fecha y hora de ltima modificacin y por ltimo el nombre delarchivo o
directorio.
El primer caracter al extremo izquierdo, representa el tipo de archivo, los posibles valores
para esta posicin son los siguientes:
- un guin representa un archivo comun (de texto, html, mp3, jpg, etc.)
d representa un directorio
l link, es decir un enlace o acceso directo
b binario, un archivo generalmente ejecutable
Los siguientes 9 restantes, representan los permisos del archivo y deben verse en grupos de
3.
Los tres primeros representan los permisos para el propietario del archivo. Los tres
siguientes son los permisos para el grupo del archivo y los tres ltimos son los permisos
para el resto del mundo o otros.
rwx
rwx
rwx
usuario grupo otros

En cuanto a las letras, su significado son los siguientes:


r read - lectura
w write - escritura (en archivos: permiso de modificar, en directorios: permiso de crear
archivos en el dir.)
x execution - ejecucin
Las nueve posiciones de permisos son en realidad un bit que o esta encendido (mostrado
con su letra correspondiente) o esta apagado (mostrado con un guin -), asi que, por
ejemplo, permisos como rwxrw-r--, indicara que los permisos del propietario (rwx) puede
leer, escribir y ejecutar el archivo, el grupo (o sea los usuarios que esten en mismo grupo
del archivo) (rw-) podr leer y escribir pero no ejecutar el archivo, y cualquier otro usuario
del sistema (r--), solo podr leer el archivo, ya que los otros dos bits de lectura y ejecuccin
no se encuentran encendidos o activados.
Permisos en formato numrico octal
La cambinacin de valores de cada grupo de los usuarios forma un nmero octal, el bit x es
20 es decir 1, el bit w es 21 es decir 2, el bit r es 22 es decir 4, tenemos entonces:
r=4
w=2
x=1
La combinacin de bits encendidos o apagados en cada grupo da ocho posibles
combinaciones de valores, es decir la suma de los bits encendidos:
----x
-w-wx
r-r-x
rwrwx

=0
=1
=2
=3
=4
=5
=6
=7

no se tiene ningn permiso


solo permiso de ejecucin
solo permiso de escritura
permisos de escritura y ejecucin
solo permiso de lectura
permisos de lectura y ejecucin
permisos de lectura y escritura
todos los permisos establecidos, lectura, escritura y ejecucin

Cuando se combinan los permisos del usuario, grupo y otros, se obtienen un nmero de tres
cifras que conforman los permisos del archivo o del directorio. Esto es ms fcil
visualizarlo con algunos ejemplos:
Permisos
Valor Descripcin
rw------600
El propietario tiene permisos de lectura y escritura.
El propietario lectura, escritura y ejecucin, el grupo y otros solo
rwx--x--x
711
ejecucin.
El propietario lectura, escritura y ejecucin, el grupo y otros pueden
rwxr-xr-x
755
leer y ejecutar el archivo.

rwxrwxrwx

777

r--------

400

rw-r-----

640

El archivo puede ser ledo, escrito y ejecutado por quien sea.


Solo el propietario puede leer el archivo, pero ni el mismo puede
modificarlo o ejecutarlo y por supuesto ni el grupo ni otros pueden
hacer nada en el.
El usuario propietario puede leer y escribir, el grupo puede leer el
archivo y otros no pueden hacer nada.

Estableciendo los permisos con el comando chmod


Habiendo entendido lo anterior, es ahora fcil cambiar los permisos de cualquier archivo o
directorio, usando el comando chmod (change mode), cuya sintaxis es la siguiente:
chmod [opciones] permisos archivo[s], algunos ejemplos:
$> chmod 755 reporte1
$> chmod 511 [Link]
$> chmod 700 julio*
$> chmod 644 *
Los ejemplos anterior establecen los permisos correspondientes que el usuario propietario
desea establecer, el tercer ejemplo (chmod 700 julio*) cambiar los permisos a todos los
archivos que empiezen con julio (julio01, julio02, julio_respaldo, etc.) debido al caracter '*'
que es parte de las expresiones regulares que el shell acepta, e indica lo que sea. El ltimo
ejemplo por lo tanto cambiar los permisos a los archivos dentro del directorio actual.
Una opcin comn cuando se desea cambiar todo un rbol de directorios, es decir, varios
directorios anidados y sus archivos correspondientes, es usar la opcin -R, de recursividad:
$> chmod -R 755 respaldos/*
Esto cambiar los permisos a 755 (rwxr-xr-x) del directorio respaldos y de todos los
subdirectorios y archivos que estn contenidos dentro de este.
Estableciendo permisos en modo simblico
Otra manera popular de establecer los permisos de un archivo o directorio es a travs de
identificadores del bit (r,w, o x) de los permisos, como ya se vi anteriormente, pero ahora
identificando adems lo siguiente:

al usuario con la letra u


al grupo con la letra g
a otros usuarios con la letra o
y cuando nos referimos a todos (usuario, grupo, otros) con la letra a (all, todos en ingls)
el signo + para establecer el permiso
el signo - para eliminar o quitar el permiso

La sintaxis es muy simple chmod augo[+|-]rwx[,...] archivo[s], asi por ejemplo, si queremos
que otros tengan permiso de escritura sera chmod o+w archivo, todos los usuarios con

permisos de ejecucin chmod a+x archivo.


En este modo de establecer permisos, solo hay que tomar en cuenta que partiendo de los
permisos ya establecidos se agregan o se quitan a los ya [Link] con ejemplos
su manera de trabajar:
Actual

chmod

rw-------

a+x

rwx--x--x

go-x

Resultad
Descripcin
o
rwx--x-Agregar a todos (all) permisos de escritura.
x
rwx------ Se eliminan permiso de ejecucin para grupo y otros.

rwxr-xr-x

u-x,go-r

rw---x--x quita lectura.

rwxrwxrwx

u-x,go-rwx

rw-------

r--------

a+r,u+w

rw-r--r--

rw-r-----

urw,g+w,o+x

---rw---x

Al usuario se le quita ejecucin, al grupo y otros se le


Al usuario se le elimina ejecucin, al grupo y otros se
eliminan todos los permisos.
A todos se les agrega lectura, al usuario se le agrega
escritura.
Al usuario se le eliminan lectura y escritura, al grupo se
le agrega lectura y otros se le agrega ejecucin.

Cambiando propietario y grupo


Volviendo a mostrar el listado al inicio de este artculo:
$> ls l
-rwxrwxr-- 1 sergio ventas 9090 sep 9 14:10 presentacion
-rw-rw-r-- 1 sergio sergio 2825990 sep 7 16:36 reporte1
drwxr-xr-x 2 sergio sergio 4096 ago 27 11:41 videos
Vemos en la tercera y cuarta columna al usuario propietario del archivo y al grupo al que
pertence, es posible cambiar estos valores a travs de los comandos chown (change owner,
cambiar propietario) y chgrp (change group, cambiar grupo). La sintaxis es muy sencilla:
chown usuario archivo[s] y chgrp grupo archivo[s]. Adems al igual que con chmod,
tambin es posible utilizar la opcin -R para recursividad.

#> ls -l presentacion
-rwxrwxr-- 1 sergio ventas 9090 sep 9 14:10 presentacion
#> chown juan presentacion
#> ls -l presentacion
-rwxrwxr-- 1 juan ventas 9090 sep 9 14:10 presentacion
#> chgrp gerentes presentacion
#> ls -l presentacion
-rwxrwxr-- 1 juan gerentes 9090 sep 9 14:10 presentacion

Solo el usuario root puede cambiar usuarios y grupos a su voluntad sobre cualquier usuario,
queda claro que habiendo ingresado al sistema como usuario normal, solo podr hacer
cambios de grupos, y eso solo a los que pertenezca.
Una manera rpida para el usuario root de cambiar usuario y grupo al mismo tiempo, es con
el mismo comando chown de la siguiente manera:
#> chown [Link] presentacion (o en vez de punto, con : puntos)
#> chown juan:gerentes presentacion
As, cambiar el [Link] en una sola instruccin.
Bits SUID, SGID y de persitencia (sticky bit)
An hay otro tipo de permisos que hay que considerar. Se trata del bit de permisos SUID
(Set User ID), el bit de permisos SGID (Set Group ID) y el bit de permisos de persistencia
(sticky bit). Para entender los dos primeros el SUID y el SGID veamos los permisos para
un comando de uso comn a todos los usuarios, que es el comando passwd, que como se
sabe sirve para cambiar la contrasea del usuario, y puede ser invocado por cualquier
usuario para cambiar su propia contrasea, si vemos sus permisos observaremos un nuevo
tipo de permiso:
#> ls -l /usr/bin/passwd
-r-s--x--x 1 root root 21944 feb 12 2006 /usr/bin/passwd
SUID
En vez de la 'x' en el grupo del usuario encontramos ahora una 's' (suid). passwd es un
comando propiedad de root, pero sin embargo debe de poder ser ejecutado por otros
usuarios, no solo por root. Es aqui donde interviene el bit SUID, donde al activarlo obliga
al archivo ejecutable binario a ejecutarse como si lo hubiera lanzado el usuario propietario
y no realmente quien lo lanz o ejecut. Es decir, es poder invocar un comando propiedad
de otro usuario (generalmente de root) como si uno fuera el propietario.
SGID
El bit SGID funciona exactamente igual que el anterior solo que aplica al grupo del archivo.
Es decir si el usuario pertenece al grupo 'ventas' y existe un binario llamado 'reporte' que su
grupo es 'ventas' y tiene el bit SGID activado, entonces el usuario que pertenezca al grupo
'ventas' podr ejecutarlo. Tambin se muestra como una 's' en vez del bit 'x' en los permisos
del grupo.
STICKY BIT (Bit de persistencia)
Este bit se aplica para directorios como en el caso de /tmp y se indica con una 't':
#> ls -ld /tmp
drwxrwxrwt 24 root root 4096 sep 25 18:14 /tmp
Puede apreciarse la 't' en vez de la 'x' en los permisos de otros. Lo que hace el bit de
persistencia en directorios compartidos por varios usuarios, es que el slo el propietario del
archivo pueda eliminarlo del directorio. Es decir cualquier otro usuario va a poder leer el
contenido de un archivo o ejecutarlo si fuera un binario, pero slo el propietario original
podr eliminarlo o modificarlo. Si no se tuviera el sticky bit activado, entonces en estas
carpetas pblicas, cualquiera podra eliminar o modificar los archivos de cualquier otro

usuario.
Estableciendo los permisos especiales
Para cambiar este tipo de bit se utiliza el mismo comando chmod pero agregando un
nmero octal (1 al 7) extra al principio de los permisos, ejemplo:
#> ls -l /usr/prog
-r-x--x--x 24 root root 4096 sep 25 18:14 prog
#>chmod 4511 /usr/prog
#> ls -l /usr/prog
-r-s--x--x 24 root root 4096 sep 25 18:14 prog
Ntese que el valor extra es el '4' y los dems permisos se dejan como se quieran los
permisos para el archivo. Es decir, los permisos originales en este ejemplo eran 511 (r-x--x-x), y al cambiarlos a 4511, se cambi el bit SUID reemplazando el bit 'x' del usuario por
's'.
Los posibles valores seran los siguientes:
--------------t
-----s------s-t
--s------s----t
--s--s---s--s-t

=0

Predeterminado, sin permisos especiales. No se requiere indicar.

=1

Bit de persistencia, sticky bit

=2

Bit sgid de grupo

=3

Bit sgid y sticky

=4

Bit suid

=5

Bit suid y sticky

=6

Bit suid y sgid

=7

Bit suid, sgid y sticky

MUY IMPORTANTE: Algo sumamente delicado y que se tiene que tomar muy en cuenta
es lo que decidas establecer con permisos de bit SUID y SGID, ya que recuerda que al
establecerlos de esta manera, cualquier usuario podr ejecutarlos como si fueran el
propietario original de ese programa. Y esto puede tener consecuencias de seguridad severas
en tu sistema. Siempre considera y reconsidera si conviene que un usuario normal ejecute
aplicaciones propias de root a travs del cambio de bits SUID o SGID. Mejores alternativas
pueden ser los comandos sudo y su, en este tip de [Link] encuentras una manera
de identificar archivos y ejecutables con estos bits establecidos.
Permisos preestablecidos con umask

El comando umask establece la mscara de permisos de directorio y de archivos. Es decir


los nuevos directorios y archivos que se crean obtienen el valor de los permisos a partir de
los valores de umask.
$> umask
0002
(o en formato simblico con la opcin -S)
$> umask -S
u=rwx,g=rwx,o=rx
Lo anterior indica que un directorio y archivos ejecutables se crearn con los permisos 775
y los archivos comunes con los permisos 664. Esto se logra restando de 777 el valor de
umask (777-002) y (666-002) respectivamente. El primer valor de umask corresponde para
valores de Sticky bit, GUID o SUID, que por default es 0.
$> umask
0002
(Creamos un archivo y segn la mscara debemos de tener 666-002=664 o rw-rw-r--)
$> touch archivo
$> ll archivo
-rw-rw-r-- 1 sergio sergio 0 sep 25 20:14 archivo
(Ahora creamos un directorio y segn la mscara debemos de tener 777-002=775 o
rwxrwxr-x)
$> mkdir dir
$> ls -ld dir
drwxrwxr-x 2 sergio sergio 4096 sep 25 20:20 dir
Para establecer el valor de la mscara, simplemente se usa el mismo comando umask
seguido del valor de mscara que se desee:
$> umask 0022
Para dejarlo fijo en la sesin, entonces conviene agregarlo a .bash_profile o .bash_rc de
nuestro directorio de inicio.

PROCESOS Y VERIFICACIN (VII)


COMANDO PS
ps se utiliza para obtener una instantnea de los procesos en el sistema. Muchas veces es
necesario obtener informacin valiosa, como por ejemplo determinar bajo qu usuario corre
un proceso, y utilizamos el viejo y conocido "ps aux" sin saber bien que opciones estamos
utilizando.
Generalmente en cualquier distribucin de GNU/Linux se incluye la versin de ps que
acepta diferentes tipos de opciones: las opciones UNIX que son precedidas por un guin
(dash), las opciones BSD que no utilizan guin, y las opciones GNU largas que se preceden
por dos guiones. Estas opciones se pueden mezclar, pero a veces ocasionan conflictos o
existen opciones sinnimas que producen los mismos resultados. Por ejemplo "ps -aux"
muestra todos los procesos pertenecientes al usuario llamado "x", ya que no suele existir un
usuario llamado "x" ps lo interpreta como el comando "ps aux" e imprime una advertencia
:D
Por defecto ps slo muestra los procesos con el mismo user id efectivo (EUID) que el del
usuario que lo ejecuta. Cuando utilizamos ps con las opciones "aux" el resultado es:
a: eliminar la restriccin BSD "only yourself" para agregar procesos de otros usuarios
u: utilizar el formato orientado al usuario
x: eliminar la restriccin BSD "must have a tty" para agregar procesos que no tengan una
tty asociada
De esta forma seleccionamos todos los procesos en el sistema y los mostramos en el
formato orientado al usuario.
La salida de "ps aux" es una tabla donde cada fila es un proceso y las columnas contienen la
siguiente informacin:

USER: usuario con el que se ejecuta el proceso


PID: ID del proceso
%CPU: porcentaje de tiempo que el proceso estuvo en ejecucin desde que se inici
%MEM: porcentaje de memoria fsica utilizada
VSZ: memoria virtual del proceso medida en KiB
RSS: "resident set size", es la cantidad de memoria fsica no swappeada que la tarea a
utilizado (en KiB)
TT: terminal que controla el proceso (tty)
STAT: cdigo de estado del proceso (informacin detallada ms adelante)
STARTED: fecha de inicio del proceso
TIME: tiempo de CPU acumulado
COMMAND: comando con todos sus argumentos

Los cdigos de estado del proceso pueden ser:


D: suspendido no interrumpible (generalmente esperando E/S)
R: en ejecucin o listo para ejecutarse (en cola)

S: suspendido interrumpible (esperando que se complete un evento)


T: detenido, por una seal de control de trabajo o porque est siendo traceado
W: paginado (no vlido a partir del kernel [Link])
X: muerto (nunca debe ser visto)
Z: proceso difunto ("zombie"), terminado pero no reclamado por el proceso padre

COMANDO TOP
Top es una herramienta que nos proporciona informacin de los procesos que se estn

corriendo en ese momento en tiempo real con valor de uso de CPU, memoria, swap y la
posibilidad de manipular procesos. Presenta una interfaz simple que cuenta con varias
partes.
Para ejecutar este comando solo tenemos que colocar en la consola:
# top
Y nos vamos a encontrar con algo como esto:

Se divide en dos la interfz entre la cabecera y la lista de procesos corriendo en ese


momento. La cabecera adems se divide en 5 lneas:
Primera lnea: Muestra una serie de datos referidos al sistema.
[Link] Es la hora actual de este caso
up 4:33 Horas:Minutos : Es el tiempo en minutos que el sistema esta
corriendo en este caso
2 users: Cantidad de usuarios conectados en ese momento
Load average: Los nmeros indican el estado de uso del CPU. Si los nmeros
son menores a 1 esto quiere decir que el CPU no tiene que esperar para
poder ejecutar una instruccin. Si esta por encima de 1 quiere decir que es
necesario que el CPU necesite esperar para ejecutar una instruccin. Los tres
nmeros muestran el average cada 5, 10 y 15 minutos respectivamente.
Segunda lnea: Muestra el total de procesos corriendo y los divide por estados, Total
Running, Slepping, Stopped, Zombie.
Tercera linea: Muestra el uso de CPU en ese momento.
%us: muestra el uso de cpu del usuario
%sy: muestra el uso de cpu del sistema.
%ni: Muestra el uso de CPU de procesos amistosos.
%id: muestra el uso de cpu disponible para utilizar.
%wa: muestra en porcentaje el tiempo en espera del cpu para manejo de I/O.

Cuarta linea: Muestra valores referentes a la memoria fsica del equipo (los valores
pueden ser algo enaosos).
Tota: Es el valor total de la memoria fsica
Used: Es el valor de la memoria utilizada
Free: Es el valor de la memoria libre
Buffered: Es el valor de memoria fsica que esta en el buffer de memoria.
Quinta linea: Muestra valores referentes al uso de la memoria SWAP. Es similar a la
cuarta linea en cuanto a los datos que proporciona salvo por un solo cambio que al
final de la linea muestra la memoria que esta cacheada.
Ahora bien, como puedo calcular la memoria libre que tengo en el sistema?. Para eso lo que
tenemos que hacer es sumar una serie de valores que nos presenta el comando top. La
memoria disponible es la suma del valor buffered en la cuarta linea y el valor cached de
la quinta linea:
Memoria RAM disponible = Cached(12964k) + Buffered(153762k)
Para averiguar cuanta memoria estan utilizando los programas:
Memoria RAM utilizada por programas = Used (1942256) (Cached(12964k) +
Buffered(153762k))
Luego, en la parte inferior de la pantalla se encuentra la lista de procesos corriendo en el
sistema en orden descendente. Cada linea cuenta con los siguientes datos:
PID: Process ID del proceso
USER: Usuario que esta corriendo dicha aplicacion
PR: Prioridad del proceso
NI: Valor por el cual se establece una prioridad para el proceso
VIRT: Total de la memoria virtual usada
RES: Resident task size
SHR: Estado del proceso. S (sleeping), D (uninterruptible
sleep), R (running), Z(zombies), or T (stopped or traced)
%CPU, %MEM: Porcentajes de memoria y cpu utilizados en ese momento
Time: El tiempo de uso del procesador para ese proceso
Command: El comando que esta siendo ejecutado por el Daemon

Dentro del programa podemos interactuar con el con varias opciones:


k -> Si se quiere matar el proceso, luego debemos ingresar el numero de su PID.
r -> Cambia la prioridad del proceso
O (upercase) -> Muestra las posibles columnas que podemos agregar a la lista de
procesos
1 -> Muestra la informacin de todos los cores
z o b -> Agregan colores a la interfaz
c -> Muestra el path absoluto del binario que se esta ejecutando.
n -> nos permite reducir la lista a n procesos.
N (upercase) -> Ordena los procesos por PID
A (upercase) -> Ordena los procesos por aparicion, primero se encuentran los mas
nuevos

P (upercase) -> Ordena los procesos por uso de CPU, esta opcion es la default
M (upercase) -> Ordena los procesos por memoria residente
T (upercase) -> Ordena los procesos por tiempo.
W (upercase) -> Guarda la configuracion que hicimos
q -> Salir de Top
Adems top cuenta con una serie de switches adems de las opciones anteriores:
top -u usuario -> Muestra los procesos que estan corriendo con ese usuario y sus valores
top -p PID -> muestra el proceso seleccionado y sus valores
top -n numero -> Numero es la cantidad de iteraciones que va a tener el comando y luego
se cerrara
top -d numero -> Numero es el tiempop en segundos que va a esperar el comando para
refrescar la lista.
top -b -> Batch mode, ideal para mandar resultados desde top a otros programas
Existen muchsimos mas switches y opciones para utilizar con top solo puse algunas de
ellas, pero si quieren saber mas de lo que puede hacer esta herramienta pueden ingresar el
siguiente link:
[Link]

PROCESOS EN BACKGROUD (BG) Y FOREGROUND (FG)


En linux podemos ejecutar procesos en primer plano (foreground) o bien en segundo plano
(background).
Un programa en foreground lanzado desde un terminal monopoliza dicho terminal, por lo
que en principio, no podremos ejecutar ningn otro programa a la vez (veremos mas
adelante como se puede hacer).
Por el contrario un programa en background una vez iniciado, deja de monopolizar el
terminal desde el que se lanzo, y este nos vuelve a mostrar el prompt.
Cuando lanzaremos un programa en background?
en un terminal grfico lanzamos un proceso y queremos realizar otras operaciones desde el
mismo terminal, o bien vamos a lanzar un programa que no necesita interaccin con el
usuario (en este ultimo caso nos da igual que sea un xterm o un terminal de texto.
Cuando lanzaremos un programa en foreground?
Con un proceso que necesita interaccin con el usuario, y esta interaccin se realiza a travs
del terminal.
Como podemos lanzar otro programa desde un terminal con otro programa en ejecucin
en foreground?

Pulsamos CTRL-z con lo que pausamos el programa en ejecucin y foreground, ojo lo


pausamos con lo cual dejar de funcionar, y ya podremos lanzar otro programa p.e. ls
Podemos hacer una prueba lanzamos gimp y comprobamos que podemos operar con el,
luego pulsamos CTRL-z y vemos como dejamos de poder trabajar con gimp).
Ahora queremos volver a poner en funcionamiento a gimp y as poder volver a utilizar
gimp
Si queremos devolverlo a foreground escribiremos fg.
Si queremos devolverlo a background escribiremos bg (esta sera la opcin mas lgica).
En el caso de que tengamos mas de un programa detenido deberemos indicarle tanto a fg
como a bg el ID de tarea sobre el que actuarn, este ID podemos obtenerlo con jobs
Como lanzar un programa directamente en background - &?
Siguiendo nuestro ejemplo con gimp seria gimp & . El & le indica a S.O. que ejecute el
programa en segundo plano

EDICIN Y REVISIN DE ARCHIVOS (VIII)


COMANDO CAT
Se utiliza para concatenar archivos y mostrarlos por la salida estndar (normalmente la
pantalla). Su sintaxis es muy simple:
cat [opcin] [archivo]...
Donde archivo puede ser uno o ms archivos. Si no se especifica este segundo parmetro,
cat tomar la entrada de la entrada estndar (normalmente el teclado).
Sus opciones ms comunes son:

-n: Numera todas las lneas de salida.


-b: Numera aquellas lneas de salida que no estn en blanco.

Comando MORE y LESS


La orden more puede recibir uno o ms ficheros. Si se especifica mas de uno, estos se
mostrarn en el mismo orden, haciendo pausas y mostrando un ttulo antes de comenzar
cada archivo. Cada vez que se avance en el fichero mostrado, las nuevas lneas aparecen en
la parte inferior de la pantalla, mientras las anteriores se desplazan hacia arriba.
more /etc/passwd
El Comando less es de mucha utilidad; su funcin es paginar texto en pantalla. Muchas
veces ocurre que cuando se ejecuta algn comando, la salida del mismo aporta demasiada
informacin como para que se pueda leer en la pantalla del monitor. Entonces se puede
redireccionar esta salida a less para que permita al usuario leer sin mayores problemas,
pudiendo avanzar o retroceder en el texto con las flechas de cursor del teclado. Tambin se
utiliza para visualizar archivos de texto almacenados en disco.
La idea de less proviene de un paginador llamado more, un clsico en los UNIX. El

comando more no era lo suficientemente amigable, por eso hicieron less. Su sintaxis es la
siguiente:
less [archivo...]
El comando less es un programa interactivo, es por lo que no se hablar de argumentos sino
de comandos:
ESPACIO
Si se oprime la barra espaciadora, less avanzar un nmero de lneas igual al nmero de
lneas por pantalla que posea la terminal que se est usando.
ENTER
Pulsando la tecla ENTER se va avanzando de lnea en lnea.
G: Ir al final del texto.
g: Ir al inicio del texto.
/: Ingresar una palabra a ser buscada avanzando dentro del texto.
?: Ingresar una palabra a ser buscada retrocediendo dentro del texto.
n: Ir a la siguiente ocurrencia de la bsqueda
AvPg: Avanzar una pantalla de texto.
RePg: Retroceder una pantalla de texto.
v: Cargar el editor de texto en el lugar donde se encuentre el usuario dentro del archivo. El
editor que normalmente se utiliza es el vi.
q: Salir del programa.
R: Repintar la pantalla. til cuando se est visualizando un archivo que ha sido modificado
por otro programa.
Para visualizar un archivo de texto llamado [Link], se puede utilizar less como sigue:
less [Link]
Tambin se puede utilizar tuberas y cat para realizar lo mismo.
cat [Link] | less

Comando TAIL
El comando tail es al head como el less es al more. El comando tail escribe a la salida
estndar la ltima parte de un archivo. Su sintaxis es:
tail [opcin...] [archivo...]
Al igual que head, si no se le proporciona un argumento archivo, este comando tomar su
entrada desde la entrada estndar, la cual sin opciones muestra las ultimas 10 lneas. Alguna

de sus opciones son las siguientes:


-c N: Escribe los ltimos N bytes.
-n N: Escribe las ltimas N lneas.
-f: Escribir la ltima parte del archivo a medida que va creciendo. Esta opcin es muy til
para monitorear archivos de registro que van creciendo con el tiempo.
Un uso muy comn de tail es utilizarlo para inspeccionar logs (o bitcoras) del sistema.
tail -n 20 /var/log/messages
mostrar las ultimas 20 lneas del log messages.
En el caso que se quiera tener un seguimiento de un log en especial se puede utilizar la
opcin f
tail -n 15 -f /var/log/messages
mostrar las ultimas 15 lneas del log messages. Y luego quedar a la espera de nuevas
lneas por aparecer en el final del archivo.

COMANDO HEAD
Escribe por salida estndar la primera parte de un archivo, por defecto, son las primeras 10
lneas. Su sintaxis es como sigue:
head [opcin...] [archivo...]
Si no se especifica el argumento archivo, este comando tomar su entrada de la entrada
estndar. La lista de opciones ms importantes sigue a continuacin:
-c N: Escribe los primeros N bytes.
-n N: Escribe las primeras N lneas en vez de las primeras 10 (que es el valor
predeterminado).

Comando WC
El nombre del comando wc proviene de word count, y como es de suponer, sirve para
contar palabras. Pero no slo palabras como se ver a continuacin. Su sintaxis es como
sigue:
wc [opcin...] [archivo...]

Si se omite el argumento archivo, wc tomar los datos (naturalmente) de la entrada


estndar.
La lista de opciones ms importantes es la siguiente:
-c: Contar bytes.
-l: Contar lneas.
-w: Contar palabras.
Como ejemplo, se pueden contar las lneas del archivo /etc/passwd y de esta manera se
sabr rpidamente cuntos usuarios tiene definidos el sistema:
usuario@maquina:~/$ wc -l /etc/passwd
32 /etc/passwd
Se pueden combinar varios argumentos a la vez.

COMANDO GREP
Su funcionalidad es la de escribir en salida estndar aquellas lneas que concuerden con un
patrn. Su sintaxis es como sigue:
grep [opciones] PATRN [ARCHIVO...]
grep [opciones] [-e PATRN | -f ARCHIVO] [ARCHIVO...]
Este comando realiza una bsqueda en los archivos (o en la entrada estndar, si no se
especifica ninguno) para encontrar lneas que concuerden con PATRN. Por defecto grep
imprime en pantalla dichas lneas. Sus opciones ms interesantes son:
-c: Modificar la salida normal del programa, en lugar de imprimir por salida estndar las
lneas coincidentes, imprime la cantidad de lneas que coincidieron en cada archivo.
-i: Busca caracteres sin importar sin son maysculas o minsculas.
-e PATRN: Usar PATRN como el patrn de bsqueda, muy til para proteger aquellos
patrones de bsqueda que comienzan con el signo -.
-f ARCHIVO: Obtenee los patrones del archivo ARCHIVO
-H: Imprimir el nombre del archivo con cada coincidencia.
-r: Buscar recursivamente dentro de todos los subdirectorios del directorio actual.
El patrn de bsqueda normalmente es una palabra o una parte de una palabra. Tambin se
pueden utilizar expresiones regulares, para realizar bsquedas ms flexibles.

Si se quisiera buscar la ocurrencia de todas las palabras que comiencen con a minscula,
la ejecucin del comando sera algo as:
grep 'a*' archivo
Tambin se pueden aprovechar las tuberas para realizar filtros, lo anterior es equivalente a:
cat archivo | grep 'a*'

COMANDO NANO
Nano es el un sencillo editor de textos para el terminal que viene instalado por defecto en
Ubuntu. No es tan potente como Vim o Emacs pero es mucho ms fcil de manejar que estos.
As cualquier usuario por poco experimentado que sea es capaz de empezar a usar Nano
desde el primer momento gracias a las dos lneas de ayuda que mantiene en su parte inferior.
Al ser un editor en modo texto, se suele usar sobretodo en entornos sin interfaz grfica como
Ubuntu Server, pero eso no impide que lo utilicemos en Ubuntu Desktop.
Para editar un archivo con Nano tenemos que ejecutar el siguiente comando:
nano nombre_archivo
donde nombre_archivo ser el nombre del archivo que queramos editar. En caso de que el
archivo no existiera, se crear un archivo vaco con ese nombre.
Vamos a editar el archivo .bash_history, que contiene los comandos que hemos ido
escribiendo en el terminal, para ver un ejemplo concreto:
nano bash_history
Nos aparecer entonces el contenido del archivo para que podamos modificarlo con el editor.
Si lo modificamos (no te preocupes que en este archivo no pasa nada si lo cambias), veremos
en la parte superior derecha el texto Modificado. Para guardar los cambios, pulsaremos la
combinacin de teclas Control+o. Y para salir, Control+x.

Editamos un archivo con nano


Damos por hecho que si necesitamos permisos de administracin para editar un archivo,
tendramos que escribir sudo antes del comando. Por ejemplo:
sudo nano /etc/network/interfaces
Nano est pensado para ser usado con el teclado, no con el ratn, por lo que tiene asociadas
multitud de acciones a combinaciones de teclas. En la siguiente tabla podemos ver algunas
de las ms importantes:
Tecla
Control+g o F1
Control+x o F2
Control+o o F3
Control+w o F6
Control+k o F9
Control+u o F10
Alt+m
Alt+r
Alt+s

Funcin
Muestra la ayuda
Salir sin guardar
Guarda el archivo actual
Busca una cadena de texto o expresin regular
Corta la lnea actual
Pega la lnea cortada
Activa o desactiva el soporte para el ratn
Busca una cadena y la reemplaza por otra
Activa o desactiva el desplazamiento suave

Sin embargo, si quieres exprimir al mximo las posibilidades de este editor, sera
recomendable leer la ayuda que trae. Para ello pulsamos en cualquier momento F1 o la
combinacin de teclas Control+g (como se indica en la tabla anterior).

Para ver la ayuda de Nano pulsa F1


Y si bajas un poco podrs ver todas las combinaciones de teclas y su significado:

Combinaciones de teclas de Nano

COMANDO VIM O VI
vi (pronunciado ube-i) es el editor estndar de UNIX. El inters de aprender a manejar este
editor es que en cualquier mquina UNIX tendremos al menos esta herramienta para editar
ficheros. vi facilita 20 lneas en pantalla para realizar la edicin. vi es un editor que, en un
momento dado, se encuentra en uno de dos modos bsicos de operacin: modo de
comandos y modo de edicin.
El modo por defecto es el modo de comandos. En este modo no se puede realizar la
edicin del texto. vi espera al comando apropiado antes de realizar una operacin. En
general, vi volver al modo de comandos despus de ejecutar un comando.
La ventaja de este modo de trabajar es que se pueden ejecutar comandos desde ficheros, y
los documentos pueden ser formateados o reestructurados simplemente ejecutando
comandos de vi.
Si al presionar ESC el terminal emite un pitido quiere decir que estamos en modo de
comandos.
Iniciando vi
Para comenzar a usar vi, teclear
vi nuevo_fichero
Este comando inicia el editor y, como el fichero no existe todava, lo crea para ser editado.
El editor est ahora en modo de comandos esperando por un comando.
vi +5 nombre_fichero
//Comienza la edicin en la lnea 5
vi + nombre_fichero
//Comienza la edicin en la ltima lnea
Moviendo el cursor
Las siguientes teclas controlar el movimiento del cursor.
k arriba j abajo h izquierda l derecha
Cuando se carga vi con un nuevo fichero, el cursor est en la esquina superior izquierda de
la pantalla, y no puede ser movido con las teclas de cursor.
Modo de entrada de texto (aadir, insertar)
a aade texto a partir del carcter en que est situado el cursor. A aade texto al final de
la lnea actual. i inserta texto a partir de la posicin del cursor I inserta texto al
principio de la lnea actual. o inserta una lnea debajo de la posicin del cursor O
inserta una lnea encima de la posicin del cursor :r fich permite insertar el fichero
fich tras la lnea actual
Borrando y cambiando texto
Los tres comandos ms utilizados para alterar el texto son
x borra el carcter en el cursor nx borra n caracteres hacia la derecha, incluido el que

est sobre el cursor. nX borra n caracteres hacia la izquierda. r sustituye el carcter


en el cursor dd borra la lnea en la que est el cursor ndd borra n lneas hacia abajo
incluyendo la que contiene el cursor.
Estos tres comandos son ejecutados en el modo de comandos, y vuelven al modo de
comandos despus de ejecutarse.
Deshaciendo cambios
Hay veces que se realizan cambios y nos damos cuenta inmediatamente que hemos
cometido un error. El editor vi facilita mecanismos para deshacer acciones de comandos
previos.
El comando u deshace el comando previo.
El comando U deshace todos los cambios realizados en la lnea actual.
Guardando cambios y permaneciendo en vi
Es muy recomendable guardar los cambios que se van realizando de una forma regular.
Para ello se utiliza
:w
Si decides que no quieres sobreescribir el fichero que ests editando, sino que quieres
guardar los cambios como un fichero nuevo, aade al comando :w el nombre del nuevo
fichero,
:w nuevo_fichero2
Abandonando vi
Para dejar vi se utiliza,
ZZ Guarda los cambios en el fichero original, y vuelve al intrprete de comandos :wq
Igual que ZZ :q! Abandona el editor, no guarda los cambios, y vuelve al intrprete
de comandos
Comandos adicionales para posicionamiento del cursor
Adems de las teclas h, j, k, l existen cuatro ms:
b mueve el cursor al comienzo de la palabra anterior e mueve el cursor al final de la
palabra siguiente 0 mueve el cursor al comienzo de la lnea (cero) $ mueve el
cursor al final de la lnea
Scroll de pantalla
Los comandos para avanzar una pantalla arriba y abajo (12 lneas) son
ctrl-d una pantalla abajo ctrl-u una pantalla arriba
Para ficheros muy largos, se puede ir a una lnea del texto
3000G va a la lnea nmero 3000
Para posicionar el curso en la ltima lnea del fichero, teclea
G
Para posicionar el cursor al comienzo del fichero, teclea
1G
El siguiente comando muestra el nmero de lnea actual
ctrl-g
Bsqueda
Otro mtodo de posicionarse dentro de un fichero es buscando una cadena de caracteres. En
el modo de comandos, cualquier cadena de caracteres precedida por / significa el comando
de bsqueda hacia adelante. El cursor se posiciona en la primera ocurrencia de dicha

cadena.
El comando n busca hacia adelante la siguiente ocurrencia.
Para buscar hacia atrs, se utiliza el comando ?
Borrar texto
Ya se vio anteriormente el comando dd para borrar la lnea actual.
El comando dw borra la palabra actual. Ntese que el comando de borrado comienza por d,
seguido por el mbito de aplicacin (d para una lnea, w para una palabra (word en ingls)).
Quitar y poner
Cuando se borra algo, es almacenado en un buffer temporal. El contenido de este buffer
puede ser accedido y 'puesto' o pegado en cualquier sitio del texto.
Para recuperar el ltimo texto borrado, se usa el comando p
nyw guarda en la memoria intermedia n palabras contadas desde la posicin del cursor.
y$ guanda en la memoria intermedia desde la posicin del cursor hasta el final de la lnea.
yy guarda en la memoria intermedia la lnea entera en la que se encuentra el cursor.
yn guarda en la memoria intermedia n+1 lneas desde la lnea actual.

SALIDAS ESTNDAR Y TUBERAS (IX)


STDIN, STDOUT, STDERR
En Linux, todo comando tiene disponibles los siguientes 3 descriptores: STDIN, STDOUT y
STDERR.
Estos flujos tambin tienen un nmero asociado: STDIN es 0, STDOUT es 1 y STDERR es 2.
Cuando no se especifica ninguno, se considera que se trata de STDOUT.

La entrada estndar (STDIN): representa los datos que necesita una aplicacin para
funcionar, como por ejemplo un archivo de datos o informacin ingresada desde la
terminal y es representado en la terminal como el tipo 0.
La salida estndar (STDOUT): es la va que utilizan las aplicaciones para mostrarte
informacin, all podemos ver el progreso o simplemente los mensajes que la aplicacin
quiera darte en determinado momento y es representado en la terminal como el tipo 1.
El error estndar (STDERR): es la forma en que los programas te informan sobre los
problemas que pueden encontrarse al momento de la ejecucin y es representado en la
terminal como el tipo 2.
Todos estos tipos son representados fsicamente como archivos en el sistema, pues como
ya deben saber, todo en Linux son archivos.
STDOUT (Standard Output)

La salida estndar es hacia donde el comando enva su salida. Este flujo de datos se
imprime en la consola y se enva al STDIN de un comando que lo consuma

Ejemplo: En un directorio tenemos 2 archivos y el contenido de 1 de ellos es Contenido
del archivo.

Si buscamos Contenido dentro de ellos obtenemos:
$ grep Contenido *
[Link]:Contenido del archivo

La salida del comando se envi al STDOUT, en este caso, la consola.



STDIN (Standard Input)

La entrada estndar proviene del teclado o de la salida de otro comando.
Ejemplo:

Si listamos solamente los primeros 4 directorios o archivos del directorio raz:
$ ls / | head -n4
bin
boot
cdrom
dev

La salida STDOUT del comando ls se convierte en la STDIN del comando head y lo que
vemos en la consola es el STDOUT del comando HEAD

STDERR (Standard Error)

La salida estndar de error es hacia donde el comando enva datos de error al momento
de realizar su tarea. Este flujo de datos tambin se imprime en la consola pero NO se enva
al STDIN de un comando que lo consuma.

Ejemplo: En un directorio tenemos 4 archivos cuyo contenido es Contenido del archivo y
sobre 2 de ellos no tenemos permiso de lectura.

a) Si buscamos Contenido dentro de todos ellos obtenemos:

$ grep Contenido *
[Link]:Contenido del archivo
[Link]:Contenido del archivo

grep: [Link]: Permiso denegado


grep: [Link]: Permiso denegado

Las primeras 2 lneas corresponden a lo que se envi a STDOUT y las otras 2, a STDERR. En
este caso, todo se imprime en la consola.

b) Si buscamos Contenido dentro de todos ellos y generamos un archivo con los que
hayamos encontrado:

$ grep Contenido * | cat > [Link]
grep: [Link]: Permiso denegado
grep: [Link]: Permiso denegado
Del comando grep, solo veremos en la consola lo que se envi al STDERR dado que el
STDOUT se utiliz como STDIN del comando cat.

$ cat [Link]

[Link]:Contenido del archivo
[Link]:Contenido del archivo

Viendo el contenido del archivo [Link] podemos notar que solamente contiene
la salida STDOUT del comando grep.

REDIRECCION Y TUBERIAS

Una redireccin consiste en trasladar la informacin de un tipo a otro, por ejemplo de la
salida estndar a la entrada estndar o del error estndar a la salida estndar. Esto lo
logramos usando el smbolo >.

Por ejemplo, para redireccionar la salida de un comando y volcarla a un archivo bastara
con ejecutar:

$ ls -la ~ > [Link]

Sin embargo, cada vez que ejecutemos ese comando el contenido de [Link]
reemplazado por la salida del comando ls. Si queremos agregar la salida del comando al
archivo, en lugar de reemplazarla, entonces ejecutamos:

$ ls -la ~ >> [Link]

Lo interesante es que, adems de la salida estndar, tambin podemos redireccionar el


error estndar y la entrada estndar. Si queremos forzar a que un programa nos imprima
en pantalla los errores que consiga durante su ejecucin podemos redireccionar el error
estndar hacia la salida estndar. Eso lo logramos ejecutando:

$ programa 2>&1

Recuerdan que ms arriba les explicaba que Linux identifica a cada tipo con un nmero?
Bueno, aqu es donde esos nmeros cobran sentido. El tipo 2 es el error estndar y el
tipo 1 es la salida estndar. En los ejemplos previos no tuvimos la necesidad de especificar
el tipo 1 porque la terminal lo asume pero pudimos expresarlos explcitamente de la
siguiente manera:

$ ls -la ~ 1> [Link]
$ ls -la ~ 1>> [Link]

Podemos, por ejemplo, contar las lneas que tiene un archivo redireccionando la entrada
estndar de wc hacia un archivo de texto. As:

$ wc < [Link]

Tambin podemos hacer algo muy comn en la administracin de sistemas, descartar el
error estndar de un proceso. Para eso ejecutamos:

$ programa 2> /dev/null

O incluso descartar su salida estndar:

$ programa > /dev/null

En Linux, /dev/null es un archivo especial al que se enva cualquier informacin que quiera
ser descartada.


Tuberas

Uno de los principios de la filosofa Unix consiste en tener aplicaciones muy pequeas que
hagan tareas muy puntuales y que usadas en conjunto puedan realizar tareas complejas.
Entonces, siguiendo este principio debe existir una forma para que varias aplicaciones
puedan interactuar entre s, aqu es donde entran las tuberas.
Una tubera en Linux no es ms que una forma prctica de redireccionar la salida
estndar de un programa hacia la entrada estndar de otro. Esto se logra usando el
smbolo | (pipe).

Por ejemplo, podramos ver los procesos que estn corriendo en el sistema usando ps y le
redireccionamos la salida a sort para que los ordene por PID:

$ ps -a | sort

Tambin podemos redireccionar la salida estndar del comando cat y pasarla como
entrada estndar del comando wc para contar las lneas y palabras de un archivo:

$ cat [Link] | wc

Tanto las redirecciones como las tuberas son conceptos fundamentales que sin duda
debes manejar para empezar a sentirte cmodo con la terminal. Vers que al cabo de un
tiempo no sabrs cmo pudiste vivir sin ellos.

COMANDOS DE RED (IX)


COMANDO PING

Comando de administracin del sistema. Confirma que un host remoto est online y
responde. El ping se usa para verificar la conectividad entre dos hosts en una red. Enva
una paquetes de peticin echo de ICMP a una direccin IP remota y espera respuestas
ICMP.


SINTAXIS:

La sintaxis es
ping [opciones] host


OPCIONES:

-a

Hacer el ping audible Pitar cada vez que se reciba respuesta.

-b

Hacer ping a una direccin broadcast.

-c
cuenta

-n
-q

Parar despus de enviar "cuenta" de paquetes ECHO_REQUEST. Con opcin de


tiempo lmite, el ping espera hasta "count" paquetes de ECHO_REPLY, hasta que
el tiempo expira.
Mostrar las direcciones de red como nmeros. El ping normalmente muestra las
direcciones como hostnames.
Output silenciosono se muestra nada excepto las lneas sumario al inicio y al
final.

-i

Especifica el intervalo entre transmisiones sucesivas. Por defecto es un segundo.

-t

Establece el Tiempo de Vida IP a n segundos.

-w

Salir de ping despus de n segundos.

EJEMPLO:


1. ping [Link] -c 3

Muestra ECHO_REQUEST 3 veces slo porque establecemos la cuenta a tres.
2. ping -n [Link]

Aqu las direcciones de red se muestran como nmeros, normalmente muestra
hostnames.



COMANDO SSH Y VARIATES
SSH es un programa que permite acceder a otro ordenador a traves de la red, ejecutar
comandos en la maquina remota y mover ficheros entre dos maquinas. Provee
autenticacion y comunicaciones seguras sobre canales inseguros. Es un reemplazo
de rlogin, rsh y rcp.
Vamos a ver estos usos basicos del SSH.
ssh
El comando ssh ofrece comunicacion encriptada y segura entre dos sistemas sobre una
red no segura. Este comando reemplaza al telnet, rlogin, rsh.
Para iniciar una sesion en otra maquina usando ssh:

[usuario1@localhost usuario1]$ ssh usuario1@[Link]
The authenticity of host '[Link] ([Link])' can't be established.
RSA key fingerprint is [Link].
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[Link]' (RSA) to the list of known hosts.
usuario1@[Link]'s password:
[usuario1@[Link] usuario1]$

La primera vez que realizas la conexion debes aceptar la firma del otro host. De esta
manera se establece una relacion de confianza que se traduce en archivar la clave
publica de este servidor en el fichero $HOME/.ssh/known_hosts.

La sintaxis basica del comando ssh es:


ssh user@hostname [command]

El comando es opcional. Si se especifica en lugar de obtener un shell se ejecuta el
comando en la maquina remota.
Por ejemplo podriamos hacer un ls en la maquina remota y observar su salida:

ssh usuario1@[Link] ls

O realizar alguna operacion mas elaborada como realizar una copia en local de un
directorio remoto, como en el ejemplo:

ssh usuario1@[Link] "tar cf - /home/usuario1" |\
tar xvf -

Una de las funcionalidades que le da mayor potencia al ssh es la redireccion de las X. Si
observas la variable de entorno DISPLAY observa que tiene la forma localhost:n.n, esta
permite que al abrir cualquier aplicacion grafica su salida se redirija al display del cliente.

[usuario1@localhost usuario1]$ ssh usuario1@[Link]
[usuario1@servidor usuario1]$ echo $DISPLAY
localhost:11.0
[usuario1@servidor usuario1]$ xeyes&
[usuario1@servidor usuario1]$

scp
El comando scp permite copiar ficheros entre dos maquinas. Utiliza ssh para la
transmision de la informacion, por lo que ofrece la misma seguridad que el ssh. De la
misma manera utiliza los metodos de autenticacion de ssh. Este comando reemplaza
al rcp, ftp.
Este es un ejemplo de uso del scp para copiar desde la mquina local a una remota:

[usuario1@localhost]scp /tmp/file usuario1@[Link]:/tmp

Tambien podemos copiar ficheros entre dos maquinas remotas:



[usuario1@localhost]scp usuario1@anotherhost:/tmp/file \
usuario1@[Link]:/tmp

La sintaxis del comando es:

scp [-pqrvBC46] [-F ssh_config] [-S program] [-P port] [-c cipher]
[-i identity_file] [-o ssh_option] [[user@]host1:]file1 [...]
[[user@]host2:]file2

Puedes consultar las opciones en la pagina man de scp, estas son las mas habituales:

-p: conserva las propiedades del archivo. Permisos del archivo, fecha de ultima de
modificacion.
-r: copia recursiva de directorios

La sintaxis para especificar el origen o destino de los archivos tiene la


forma [[user@]host:]file donde:

user: es el usuario de la maquina. Si no se especifica es el actual.


host: es la maquina origen o destino del archivo. Si no se informa es la maquina
local.
file: fichero o directorio a copiar. Por defecto es el directorio HOME del usuario. En
caso de ser un directorio deberis especificar la opcion -r.

sftp
El comando sftp transfiere archivos entre maquinas de forma interactiva.
Los comandos interactivos son similares al clasico ftp:

[usuario1@localhost usuario1]$ sftp [Link]
Connecting to [Link]...
usuario1@servidor's password:
sftp> help
Available commands:
cd path Change remote directory to 'path'
lcd path Change local directory to 'path'
chgrp grp path Change group of file 'path' to 'grp'

chmod mode path Change permissions of file 'path' to 'mode'


chown own path Change owner of file 'path' to 'own'
help Display this help text
get remote-path [local-path] Download file
lls [ls-options [path]] Display local directory listing
ln oldpath newpath Symlink remote file
lmkdir path Create local directory
lpwd Print local working directory
ls [path] Display remote directory listing
lumask umask Set local umask to 'umask'
mkdir path Create remote directory
put local-path [remote-path] Upload file
pwd Display remote working directory
exit Quit sftp
quit Quit sftp
rename oldpath newpath Rename remote file
rmdir path Remove remote directory
rm path Delete remote file
symlink oldpath newpath Symlink remote file
version Show SFTP version
!command Execute 'command' in local shell
! Escape to local shell
? Synonym for help
sftp>

Un ejemplo de uso:

[usuario1@localhost]sftp usuario1@[Link]
sftp> get fichero



COMANDO WGET

Primero mencionar que las opciones que nos ofrece wget son bastante extensas y que se
tratara en esta entrada abordar casos de los mas comunes, pero si se
desea informacin mas extensa puedes ejecutar en una terminal lo siguiente:
man wget
Veamos la sintaxis para su uso:

wget [opciones] [Link] . de archivo & extensin


Bastante simple, ordenamos que se ejecute el programa Wget para que ejecute X accin
del programa sobre X sitio y X archivo.
Un ejemplo rpido, digamos que deseamos descargar un DVD de la compilacin diaria de
Ubuntu 10.10 Maverick Meerkat. El comando seria:
wget [Link]
Pero que pasa, tenemos una conexin inestable? propensos a que se corte
la energa elctrica?, no debemos de preocuparnos una modificacin a la anterior linea
y as se vaya la energa, nos reinicien el ordenador o lo que sea, la descarga continuara
cuando iniciemos nuevamente, para ello la siguiente linea:
wget -c [Link]
Otra opcin interesantes es, no te llega a gustar el nombre del archivo que se bajara en este
caso puedes agregar una opcin mas y elegir el nombre que prefieras as;
wget -c -outputdocument=maverickmeerkat[Link]
Como lo dije en la entrada donde hablaba sobre instalacin y beneficios de
Wget tambin podemos descargar desde servidores ftp, una descarga sencilla seria:
wget -c [Link]
Supongamos que deseamos descargar algo desde nuestro servidor ya sea ftp o http pero
este nos pide contrasea al entrar, no hay problema wget tambin tiene soporte
para este tipo de autentificacin, para hacer una descarga seria de la siguiente manera:
En el caso de servidor ftp:
wget -c -user=usuario password=contrasea [Link]
O
http:
wget -c user=usuario password=contrasenia[Link]

Si tenemos una gran lista de cosas por descargar podemos crear un documento en este
ejemplo [Link] el cual contenga las direcciones de los archivos, para despus con wget
descargarlas con la siguiente linea:

wget -i [Link]

Tambin hay un comando muy til para hacer un mirror, una copia exacta de un sitio web,
principalmente a mi me llama la atencin este comando para crear backups de sitios
creados por nosotros, se ejecuta:
wget mirror [Link]
Un comando parecido al anterior y muy interesante es poder descargar toda una web de
forma recursiva haciendo uso de esta misma:
wget -r [Link]
Hay muchos mas comandos, para los cuales les recomiendo leer el manual de wget
donde podrn ver mas beneficios y sobre todo las variadas y grandes opciones que tiene
este programa desde terminal.



COMANDO CURL

cURL tiene tantas opciones que lo mejor es leer su manual tendidamente. Estos que os
muestro son algunos de los usos comunes de cURL:

Para descargar un archivo:
$ curl -o [Link] [Link]

A diferencia de wget, cURL retorna el contenido descargado a la salida estdar, con lo que
usaremos la opcin -o para guardar la descarga realizada.

Para descargar una serie de archivos, podemos proporcionar una secuencia, un conjunto o
ambos. Una secuencia es una serie de nmeros entre corchetes ([]); un conjunto es una
lista delimitada por comas entre llaves ({}). Por ejemplo, el siguiente comando nos
descargar todos los archivos llamados [Link], [Link] y [Link] desde los
directorio llamados archive1996/vol1 hasta archive1999/vol4, ambos inclusive, con un
total de 48 archivos. As, usandocURL:

$ curl [Link] \
-o archive#1_vol#2_part#[Link]

Cuando se especifica una secuencia o serie, podemos proporcionar la opcin -o con una
plantilla (template), donde #1 se sustituir por el valor actual de la primera secuencia o
serie, #2 es un marcador de posicin para la segunda, y as sucesivamente. Como

alternativa, tambin podemos proporcionar -o para mantener el nombre del archivo


original (mantenerlo intacto)

Para cargar un conjunto de imgenes a un servidor, usaremos la opcin -T:

$ curl -T img[1-1000].png [Link]

En el caso anterior hemos capturado img[1-1000].png entre comlillas para evitar que la
shell interprete el patrn. Con este comando hemos conseguido cargar en nuestro
servidor desde la imagen 1 a la 1000.

[Link]









COMANDO IFCONFIG

El comando ifconfig se utiliza para configurar las interfaces de red. Ifconfig es sinnimo del
configurador de la interfaz. Ifconfig es ampliamente utilizado para inicializar la interfaz de
red y para activar o desactivarlas. El siguiente es un resumen de los usos mas comunes del
comando.

Ver la configuracin de red de un adaptador Ethernet

Ifconfig, cuando se ejecuta sin argumentos, mostrar todos los detalles de las interfaces
activas. Si agregamos el nombre de la interfaz como un argumento, los detalles solo de
esa interfaz especfica se veran en pantalla.
# ifconfig eth0

eth0 Link encap:Ethernet HWaddr [Link]
inet addr:[Link] Bcast:[Link] Mask:[Link]
inet6 addr: fe80::21d:92ff:fede:499b/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:977839669 errors:0 dropped:1990 overruns:0 frame:0
TX packets:1116825094 errors:8 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000
RX bytes:2694625909 (2.5 GiB) TX bytes:4106931617 (3.8 GiB)
Interrupt:185 Base address:0xdc00


Ver detalles de todas las interfaces, incluyendo las descativadas

ifconfig a

Descativar una interfaz

ifconfig eth0 down

Activar una interfaz

ifconfig eth0 up

Asignar una direccin IP a una interfaz
Le asignamos la direccin IP [Link] a la interfaz eth0.
ifconfig eth0 [Link]
Cambiar la mscara de subred de la interfaz eth0.
# ifconfig eth0 netmask [Link]
Cambiar la direccin de difusin (broadcast) de la interfaz de eth0.
# ifconfig eth0 broadcast [Link]
Asignar direccin IP, mscara de red y de difusin, al mismo tiempo a la interfaz eht0.
# ifconfig eth0 [Link] netmask [Link] broadcast [Link]
Cambiar el MTU
Esto va a cambiar la unidad de transmisin mxima (MTU) a un valor. MTU es el nmero
mximo de octetos que la interfaz es capaz de manejar en una transaccin. Para una
Ethernet la unidad de transmisin mxima por defecto es 1500.
# ifconfig eth0 mtu valor


Videos y Referencias
[Link]
[Link]
[Link]
[Link]

[Link]

También podría gustarte