Professional Documents
Culture Documents
gratis
Compartir222
Twittear
Compartir
+1
Compartir 222
Hoy inicia “El Curso de Linux en Español” donde semana a semana se desarrollará un tema y se
dará respuesta a todas las inquietudes que ustedes tengan respecto a los temas que iremos tratando,
el curso esta diseñado en base a la estructura del “Curso de Linux orientado a distribuciones”
que tiene un valor de $1,200 y se imparte en 60 horas, este curso esta diseñado en formato vídeo y
texto con imágenes didácticas e incluye las descargas del software que utilizaremos, de manera que
este curso sea fácil de seguir para todos.
Redistribuir
Es decir software no debe considerado como un objeto del cual se tiene que quitar de un lado para
colocar en otro como lo exigen la mayoría de las licencias propietarias. El software se puede
redistribuir por que las copias digitales son exactas.
¿Que es GNU?
GNU es un acrónimo Recursivo de GNU no es UNIX .
Save
Por un lado tenemos a nuestro auto proclamado profeta de software libre llamado Richard
Stallman el cual posee una distribución de software robusta que ha crecido con el tiempo pero que
no tiene un núcleo de sistema operativo para poder considerar un sistema completo, por otro lado a
principios de los 90s aparece el señor Linus Torvalds, ¿que hace el?. Invita a la comunidad de
desarrolladores a que le ayuden en la construcción de un núcleo de sistema operativo para
reemplazar Minix que era un sistema operativo usado para fines educativos pero que en ese
momento no era completamente libre
Entonces desde 1991 hasta 1994 logran el desarrollar del núcleo,y ya en la segunda mitad 1994 ya
logra algo decente al cual llamarle Linux Kernel 1.0.
En ese momento es donde se acuña por primera vez el termino GNU/Linux, La distribución GNU
con el Núcleo Linux.
Save
Aparece en escena otro Señor llamado Eric Raymond, Desarrollador de Software, Escritor y
conocido activista de uso de armas en estados unidos.
Eric no esta de acuerdo con el planteamiento rígido de Stallman sobre el desarrollo de software, y
defiende una posición menos radical, por que el considera que el desarrollador debe tener la
LIBERTAD de Mantener abierto o no su código.
Entonces ahí es donde el concepto de Opensource y Software libre se separan. Ya que todo el
software libre es Opensource, pero según Stallman No todo el software Opensource es Libre. Sin
embargo la idea de colaboración, retroalimentación, uso y mejora los une a la hora de brindar a la
comunidad soluciones de Software exitosas.
Save
El núcleo de Linux provee la comunicación y el manejo básico que se necesita para que la interfaz
de usuario y las aplicaciones interaccionen con el mismo.
Linux es considerado un sistema operativo Monolítico ya que la mayoría de sus componentes se
mantienen en un solo paquete a pesar de que la mayoría de los controladores no esenciales corren
como módulos.
Esto difiere del concepto de Micronúcleo, que mantiene una visión simplista de kernel que corre en
modo protegido, es decir que la capa de las aplicaciones NO puede tocar y el resto de
controladores, interface de usuario y aplicaciones corren en modo usuario es decir fuera del
circulo protegido donde corre el kernel. Pero esto es tema a tratar en otro vídeo.
Save
La empresa desarrolladora de la distribución simplemente toma el software ya desarrollado, lo
integra bajo herramientas normalmente desarrolladas por ellos mismos y las libera a la comunidad
de usuarios para su uso. Algunas son comerciales, otras orientadas al hacking, las otras mas
conocidas orientada al usuario de escritorio o al ambiente corporativo.
Entre las mas importantes tenemos a las pioneras de Slackware y Debian. Slackware tenia una
visión hacker del sistema mientras que Debian fue la distribución oficial FSF, luego se separaron
para funcionar como una organización independiente.
Luego tenemos A Redhat, Tal vez la distribución Linux mas conocida sobre todo en el ambiente
corporativo, ya que desde el principio se consolido como una empresa para ofrecer soluciones
integrales bajo esta plataforma. De igual manera SUSE nace en Alemania para cubrir el mercado
Europeo.
RedHat tiene un par de hijos. Uno reconocido llamado Fedora el cual es patrocinado por Redhat
mismo y uno Bastardo Llamado Centos que pretende llevar una compatibilidad con Redhat ES, es
el producto comercial de RedHat, Para ofrecer a la comunidad una distribución no comercial en
donde se puedan implementar soluciones homologadas solo para Redhat ES.
Debian también tiene sus hijitos, el mas afortunado es Ubuntu, que es la distribución mas sonada
en los últimos años. Esta distribución tiene varias ramificaciones, de las cuales destacamos a
Kubuntu, Xubuntu y Edubuntu las cuales solo varían en su misión, ya que Kubuntu mantiene un
escritorio basado en KDE, Xubuntu un escritorio liviano basado en XFCE y Edubuntu se orienta
al sector educativo. Pero aun así todas hacen uso de los repositorios principales de Ubuntu.
Y digo que Ubuntu es un hijo afortunado ya que su creador Mark Shuttleworth desarrollador de
Debian fue afortunado beneficiario del BUM de las .com, Convirtiéndose en multimillonario de la
noche a la mañana, y aprovecho su nueva fortuna en ir a la estación espacial siendo el segundo
turista espacial de la historia, Y crear una empresa para el desarrollo de una versión propia de
Debian para el beneficio de los usuarios de escritorio.
Pero Slackware no se queda atrás, KATEOS es una distribución basada en el, por otro lado hay
iniciativas con una visión diferente a las originales como Gentoo y Archlinux.
Archlinux por su parte conserva la estructura de Unix, por el otro lado Gentoo pretende distribuirse
en código fuente el cual se compila directamente para la maquina en la cual se corre.
¿Que loco No? Pero funciona y tiene una comunidad muy grande. de hecho una distribución de
software como ya lo han deducido no necesita de LINUX para poder correr.
En Debian usan Linux, por que les toca. Paralelamente ellos están desarrollando desde hace mucho
tiempo un núcleo Microkernel llamado Hurd, con el cual no han tenido mucho éxito ya que al
parecer la comunidad esta volcada en el desarrollo de Linux.
Además de esto han iniciado hace algunos años un proyecto llamado KfreeBSD, que no es mas que
los paquetes de Debian instalables sobre el sistema operativo FreeBSD que hace parte de los UNIX
Libres junto con NETBSD y OpenBSD
De hecho hasta Apple se ha beneficiado del software libre ya que su Núcleo, el de MAC OSX, fue
basado en la versión 4.2 de FreeBSD y el micro kernel match, se le llamo Darwin. La comunidad
de software libre trato de establecer un par de proyectos llamados Open Darwin y GNUDarwin que
pretendían utilizar el kernel Darwin para una distribución de un sistema operativo libre, pero
fallaron.
Incluso compañias comerciales que en temporadas han sido opositoras de los proyectos libres
como SCO han distribuido su sistema operativo Openserver acompañado con Distribuciones
opensource como es el caso de Skunkware y Aunque no lo crean hay distribución de GNU para
Windows, Se llama Cygwin, y provee las mismas herramientas GNU completamente funcionales
en el sistema operativo Windows.
No siendo suficiente en esta gran jungla de software libre y opensource. Existen Ramificaciones
que no son considerados distribuciones.
El núcleo Linux y parte de sus herramientas de sistema operativo son la base para el sistema
operativo Android, cuyas variaciones dan nacimiento a sabores o distribuciones del mismo, siendo
Cyanogenmod la más conocida.
Entonces vemos que Google toma el núcleo de Linux y de sus herramientas básicas y las coloca
como cimientos para desarrollar una interfaz un escritorio para dispositivos móviles, y libera un kit
de desarrollo para el mismo. Creando así su sistema operativo llamado Android.
Como Android hace parte de este gran ecosistema, se comporta de la misma forma y se crean
Distribuciones del mismo o sabores como se conoce en la comunidad de donde surge que proveen
a Android de funcionalidades que Google o los fabricantes de dispositivos móviles no incluyen en
sus dispositivos de forma predeterminada. Y esto les acarrea mucho éxito en la comunidad de
desarrollo para dispositivos móviles.
Siendo el Android significativamente simple en su estructura la proliferación de ROMs
personalizadas es extraordinariamente alta. Además actualmente los sistemas basados en Linux
son muy usados para el firmware de numerosos fabricantes de hardware como la BIOS de
servidores, Swiches, Routers, Dispositivos de comunicación y hasta consolas de video juegos
como el caso de ouya.
Finalizando, El uso de Linux y de Software Libre u OpenSource se ha masificado tanto que hoy por
hoy tiene una gran cuota del mercado, teniendo en cuenta que no solo estamos hablando de
escritorio y servidores, estamos hablando de todos los dispositivos de comunicaciones y embebidos
que hay en el mercado que usan el Kernel de Linux.
Núcleo, Shell, estructura de directorios y
permisos 2/60
Compartir14
Twittear
Compartir
+1
Compartir 14
Esta segunda entrega del curso de Linux en Español esta desarrollada para que puedas conocer y
familiarizarte con el sistema operativo Linux, de esta forma Linux ya no será un desconocido para
ti, al contrario al conocer todas sus partes lograrás el dominio sobre este gran sistema, si aun no le
has dado lectura al tema anterior puedes ir a Curso online gratis, si ya lo has hecho acompáñanos en
esta gran aventura.
Para que puedas conocer a fondo el sistema Linux lo dividiré en sus partes básicas y explicaré que
función cumple cada una de ellas, estas son las siguientes:
Núcleo de Linux.
Shell de Linux.
Directorios, estructuras de directorios.
Sistemas de archivos.
Núcleo de Linux
Linux es un núcleo de sistema operativo cuyo desarrollo comenzó en 1991 en manos de Linux
Torvalds, tres años después y gracias a la ayuda de una gran comunidad de desarrolladores, se libero
la versión 1 del código fuente. Esta versión 1 se libero bajo la licencia GPL de free software
foundation la cual es la cuna del proyecto GNU, que es una distribución de software libre.
¿Que se puede hacer con la licencia GPL?
Se puede usar el software como quieras, además lo puedes adaptar a tus propias necesidades,
además de eso lo puedes copiar sin restricción y lo puedes redistribuir, y cuando lo mejores
puedes o compartir estos cambios con comunidad.
Después de 1995 lo único que ha hecho Linux en estos 20 años a sido ir para arriba. Ahora es uno
de los sistemas operativos preferidos para ambientes de red e Internet. Pero entonces tu dirás “pero
si la mayor base instalada es Windows”. Tienes razón… pero no caes en cuenta que probablemente
en tus bolsillos tengas un teléfono corriendo Linux, y que probablemente donde tengas tu blog o tu
página web este corriendo en un servidor Linux, y que tu router puede tener Linux y no te lo pierdas
hasta la BIOS de tu ordenador, si, puede que corra un Linux. “loco no….?” Pero por eso hay que
replantear eso de la mayor base instalada.
Kernel monolítico
Como ya hemos visto el kernel de Linux es un sistema monolítico es decir que todos sus
componentes están en un solo paquete y este establece procedimiento de llamadas hacia el resto de
los procesos del sistema corriendo en un área restringida el cual estos no pueden acceder
directamente.
MicroKernel
El microkernel trabaja igual pero tiene sus diferencias. El microkernel minimiza la labor del kernel
y crea un sistema básico de llamadas de entrada y salida, de manejo de memoria y hace que todos
los demás componentes corran como procesos del sistema. La discusión entre cual de los dos es
mejor pues….. eso lo veremos en otro vídeo porque ahora lo que queremos es entender cuales son
las partes del núcleo de Linux.
Save
Gestíon de Procesos
La gestión de procesos esta centrada en la ejecución de los procesos, en el kernel de linux son
llamados hilos y representan la visualización individual de cada procesador. Se suele utilizar el
termino proceso aunque la implementación en linux no tiene concepto de hilos y procesos por
separado. El núcleo provee un API a través de la SCI, con la que puede crear nuevos procesos con
fork y con exec, matar o salir del procesos como en el caso de kill o exit. La gestión de procesos
es necesaria para poder compartir hilos en la CPU, en el kernel el planificar opera en un tiempo
constante sin tener en cuenta el numero de procesos que compiten por la CPU por eso decimos que
opera bajo demanda, este se llama planificador 01, esto denota que el lleva la misma cantidad de
tiempo para la planificación de un solo hilo o de varios , en el planificador 01 también se soporta el
multiproceso. Ósea es simétrico y multiproceso.
La memoria
Otro importante recurso que es controlado por el kernel es la memoria, debido a la eficiencia como
el hardware que maneja La Memoria Virtual esta es gestionada en paginas de 4 Kb en la mayoría
de las arquitecturas, Linux incluye definiciones para manejar la memoria disponible y los
mecanismos para hacer el mapeo en el hardware de la memoria física y en la memoria virtual. Pero
la gestión de la memoria es mucho más que búfer de 4Kb, Linux contiene abstracción de búfer
que permiten ir mas haya, este esquema maneja memoria de búfer de 4Kb, como base pero además
reserva estructura dentro de ellos y lleva la cuenta de las paginas que están completas, parcialmente
usadas o totalmente vacías para que el esquema pueda crecer o disminuir como se necesite en el
momento.
Cuando hay varios usuarios haciendo uso de la memoria existen ocasiones en las cuales esta se
agota entonces por esta razón las paginas pueden ser escritas en el disco duro temporalmente y
luego vueltas a cargar en la memoria esto se llama SWAP o intercambio, ya que las paginas se
mueven de un lado para otro cuando se necesite.
Sistema Virtual de Archivos o VFS
VFS es una capa de abstracción muy interesante que tiene el kernel y provee un interface para el
uso común de sistemas de archivos sin importar cual sea. Se llama capa de atracción porque no
importa cual sea la implementación de file system (Sistema de archivo) que estemos utilizando el
tiene las funciones básicas para poder acceder a cualquier sistema de archivos. Entonces el VFS
proporciona una capa de intercambio entre las SCI y los sistemas de archivos soportados por el
kernel.
En la parte mas alta del Virtual File System se encuentra un API común con las funciones tales
como read , write, open, close y en la parte mas baja están las abstracciones del sistema para
poder definir las atracciones mas altas, estas son añadidas a cada uno de los soportes de cada
sistema de archivos en el kernel son más de 50, bajo la capa del sistema de archivos esta el cache
del bufer que proporciona un conjunto de funciones a la capa de archivos independientemente del
sistema de archivos que se este manejando, esa capa optimiza el acceso a los dispositivos físicos
manteniendo brevemente la información arriesgándose a que esta tenga una lectura anticipada de
los datos para poderla mantener cuando haga falta. Es por eso que en la práctica cuando nosotros
leemos un sistema de archivos la primera vez es más lento y cuando volvemos a leerlo es más
rápido.
Por debajo del cache del búfer ya están los controladores directamente, los dispositivos de
hardware que hacen interface con el sistema de archivos.
La pila de Red
La pila red o diseño sigue una arquitectura por capas modelada tras los protocolos en si,
recordemos que el IP que no es solamente una dirección o un numero sino que es el protocolo
principal de internet y a su vez el protocolo central bajo el que se sitúan el protocolo de
transporte TCP/IP y sobre el protocolo de transporte TCP/IP esta la capa de socket que a su vez
llama a las SCI. La capa de socket es un API estándar para el subsistema del trabajo en red y
proporciona una interface a varios protocolos. Desde el acceso a las frames crudas hasta las
unidades de datos de IP llamadas PDU lo que nosotros vulgarmente conocemos como paquetes, el
protocolo TCP/IP y el protocolo de datagrama de usuario UDP. La capa de socket provee de esta
manera una forma estandarizada para poder manejar conexiones y mover datos de un lugar a otro.
Drivers de dispositivos
Lo siguiente en la lista son los controladores, la gran mayoría del código fuente de Linux son
controladores de dispositivos, ¿Porque? Bueno es natural, los controladores son los que nos permite
reconocer el hardware que nosotros queremos hacer funcionar con el sistema operativo basado en
Linux. El árbol de código fuente de Linux nos proporciona un subdirectorio llamado Drivers el cual
esta dividido en los diferentes dispositivos que queremos reconocer, en este código fuente vamos a
encontrar directorios como Serial, Ethernet y todos los dispositivos para los que se ha
desarrollado soporte en Linux.
Arquitectura
Por ultimo esta el código dependiente de la arquitectura, aunque Linux es independiente de la
arquitectura hay varios elementos que hay que tener en cuenta con las operaciones habituales de
eficiencia del sistema operativo, tenemos que Linux también en su árbol de desarrollo tiene un
apartado para lo que necesita específicamente cada una de las arquitecturas entonces tenemos
386, Spark, ARM, MIPS, cualquiera otra que sea soportada por el núcleo de Linux.
Hay otras características básicas del sistema operativo que vale mencionar aparte de la estructura
que estamos estudiando en este momento.
Linux por ser un sistema operativo de producción y también de código abierto es un excelente
laboratorio para nuevas tecnologías en protocolos de red, por ejemplo las redes de alta velocidad
que superan al Eternet de 1/10Gb y también por ejemplo el TCP/IP, que nos permiten características
avanzadas de TCP/IP remplazándolo como capa de transporte.
Linux también es un kernel dinámico a pesar que es monolítico también es modular y permite
que los controladores que no son esenciales para el funcionamiento sean cargados como módulos y
se permite la carga y la descarga de los mismos sin tener que afectar el funcionamiento o la
estabilidad de la plataforma.
También esta la parte de la virtualización, Linux desde hace unos años lleva soportando la
virtualización por medio de KVM Kernel-Based Virtual Machine, y esta modificación al kernel
permitió que se pudieran correr instancias por ejemplo del sistema operativo Windows y del
sistema operativo Linux al mismo tiempo, la única restricción es que la plataforma de hardware que
se este utilizando tenga la opción de virtualización.
Con eso damos fin a la explicación de los que es el núcleo de Linux a grandes rasgos, Si
quisiéramos profundizar que es el núcleo de Linux pues nunca terminamos.
La Shell
Save
La Shell es la interface de usuario tradicional en los sistemas operativos tipo Unix de allí que Linux
también cuenta con esta misma interface. La Shell cuyo nombre inglés significa Caparazón es la
interface con la que han contado los ordenadores desde antaño cuando se utilizaba únicamente una
interface donde se hacia uso únicamente de un teclado y una pantalla en un entorno ambiente de
linea de comando para poder acceder a este.
La Shell provee una interface para poder enviar y recibir el resultado de comandos o de
aplicaciones que muestran su resultado en la pantalla en forma de texto, además también provee
un lenguaje de programación básico para que los usuarios puedan utilizarlo, automatizar tareas y
procedimientos dentro del sistema y así poder facilitar su uso y administración, a esto se le llama
Shell Scripting.
Estructura de Directorios
El siguiente punto es la estructura de directorios o jerarquía, al igual que todos los otros sistemas
operativos Linux tiene una jerarquía de archivos para poder organizar la estructura y tiene la
siguiente organización Teniendo en cuenta que el / o barra diagonal que nosotros conocemos es la
base o raíz de toda la estructura entonces la vamos a llamar root ( raíz en ingles), entonces de ahí se
derivan los siguientes directorios:
Save
/bin es el que contiene los binarios indispensables para que el sistema operativo funcione en su
parte mínima como ls, rm, mkdir, ps
/boot que contiene los archivos estáticos de arranque de Linux como el kernel y el initrd
/dev contiene los archivos que representan los dispositivos tanto virtuales como de hardware que
hay en el sistema
/etc que es el directorio que contiene los archivos de configuración de en formato de texto
/home el directorio que contiene los directorios donde están los usuarios ósea donde los usuarios
tienen sus datos por ejemplo /home/efox
/lib que es las librerías esenciales también del sistema operativo y los módulos del kernel también
residen allí
/media es la raíz del punto de montaje de los dispositivos de bloque o removibles
/mnt es el punto de montaje de bloque temporal, que fue heredado de Unix es como media pero
pues ya no se utiliza tanto porque venía de Unix tradicional
/opt que es donde reside el software de aplicación agregado o de terceros como ORACLE o como
cualquier otro fabricante
/sbin que provee los binarios del sistema que no son esenciales para hacer que el sistema operativo
funcione pero que son necesarios para llevar a cabo funciones ya mas complejas, como por
ejemplo la configuración de la red, del filtrado ip, la programación de tareas y toda las demás cosa
que hacen mas completo el del sistema operativo.
/tmp que es donde residen los archivos temporales ya sean los que nosotros generamos o los que
general las aplicaciones y procesos que manejan el sistema
/usr donde están los binarios y las aplicaciones, este es el directorio que suele tener la cantidad de
espacio ocupado mas grande dentro del file system y provee una jerarquía también secundaria
donde hay un /bin, /etc, /lib, /sbin.
/var o archivos de tamaño variable como la cola de correo, las colas de impresión, las datas de los
motores de bases de datos
/root es por así decirlo el home para el root porque antiguamente en el unix el home del root estaba
sobre la misma raíz y esto generaba problemas de seguridad y organización
/proc que es un sistema de archivo virtual donde esta el estado del sistema, las condiciones y esto se
indica en archivos de texto
Permisos
Ahora esta el asunto de los permisos, me imagino que alguna vez has oído algo como “no, no
tengo los privilegios en el sistema o no es que mi usuario no es privilegiado”, se trata de esto
mismo.
En Linux aunque no lo creas solo hay 2 tipos de usuarios esto debido a la forma en la que trabaja el
núcleo, existe un usuario 0 que es llamado root, dios, admin, odin, thor o como lo quieras llamar y
todos los demás usuarios.
¿Bueno como es esto?
Realmente lo que importa son los permisos del file system, y esto no es de extrañar porque ahí es
que residen los datos que nosotros queremos restringir
¿Entonces como es esto de los privilegios?
La cosa va así, existen 3 roles distintos con 3 tipos de permisos cada uno, eso suena como tic tac
toe, triqui como nosotros lo llamamos y pues no es enredado pero el jueguito de triqui nos puede
ayudar a resolver un poquito como es esto de los permisos.
Entonces tenemos que en eje x esta el usuario propietario representado por la u propietario del
archivo, esta el grupo representado por la g que pertenece el usuario y todos los demás
representados por la letra o. En el eje y tenemos la r para lectura en ingles que es read, la w para
write que es escribir en ingles y la x para execute en ingles quiere decir ejecutar ahora los
permisos se otorgan por medio de numeros, el permiso para ejecutar es 1, el permiso para escribir
es 2 y el permiso para leer es 4, estos se suman para obtener el permiso que necesito para
determinado archivo.
Save
En este caso colocaremos 4+2+1 da 7 ósea todos los permisos, 4+0+1 osea el permiso de lectura y
ejecución y el siguiente le vamos a colocar 0+0+0 que no nos da ningún permiso , entonces
tenemos que el usuario propietario tienen todos los permisos , el grupo donde se encuentra el
usuario propietario tiene permisos de lectura y ejecución y y los demás usuarios en el sistema no
tiene permiso de hacer nada con el archivo al que le acabamos de colocar este permisos. Entonces
estos son los permisos de archivos y pues aquí hicimos la línea del tic tac toe.
Les voy a mostrar algunos ejemplos de permisos, teniendo en cuenta vamos a hacer unos
ejemplos de los permisos en Linux. Tenemos unos archivos de ejemplo vamos a ver la aplicación
de los bits de los permisos , tenemos que el primer tercio es el usuario, el segundo tercio es el
grupo y el tercer tercio es los otros, entonces vamos a hacer algunos ejemplos vamos a ser el
ejemplo que tenemos en el video
Chmod 750 ejemplo 1
Allí vemos que quedo con permisos de lectura, escritura y ejecución para el usuario, lectura y
ejecución para el grupo y ninguno para los todos los otros, ahora vamos a dar lectura y escritura a
todos, recordemos lectura es 4, escritura es 2 entonces lectura y escritura vendrían a ser 6, para
otorgarle ese permiso a todos los usuarios vendría a ser 666. Ahí esta lectura y escritura tanto para
propietario, grupo y todos los demás, ahora solo queremos lectura para todos entonces seria 444
ahí esta lectura para el propietario, el grupo y todos los otros, por ejemplo queremos nada mas
lectura y ejecución para el propietario y el grupo para todos los otros ninguno entonces seria que
lectura y ejecución seria 4+1 seria 5
Chmod 555 ejemplo 4
Entonces tenemos lectura y ejecución para el propietario y el grupo todos los otros no tienen
ningún permiso y queremos colocarle todos los permisos al archivo seria 4 del permiso de
lectura, 2 del permisos de escritura y 1 del permiso de ejecución seria 7, con esto nos damos
cuenta como se asigna los permisos de Linux. No olviden que esto se va a ampliar para los
comando específicos mas adelante solamente es para mostrar lo explicado anteriormente.
SGUI/ SUID y Sticky bit
También me parece importante explicarles o siguiente, existen 2 permisos excepcionales esta el de
SGUI/ SUID y esta STICKY BIT aquí es donde la cosa se pone buena.
Resulta que en Linux y en general a Unix hay un permiso de ejecución que se le puede agregar a
una aplicación, la cual hace que se ejecute como el usuario dueño y esto también incluye al
usuario root. Esto se llama SUID y se representa en el ejecutable con una S, en el caso del grupo
es lo mismo en el SGUI aparece también como una s en la parte de permiso de ejecución, por otro
lado esta el STICKY BIT que es una medida de seguridad ya que solo el usuario propietario de ese
archivo puede modificarlo o eliminarlo, un ejemplo de esto es cuando colocamos archivos en el
/tmp.
El ejemplo consiste en lo siguiente, vamos a buscar una aplicación, un conejillo de indias que nos
sirva para nuestro propósito, se me ocurre que top por lo es interactiva nos puede servir , entonces
copiamos la aplicación para no modificar la del sistema a la carpeta donde estamos trabajando,
ahora vamos a asignarle el permiso de suid a esa aplicación, se la aplicamos solamente al
propietario ósea los permisos de U ósea de usuario y ahí ya vemos que nuestra aplicación a
quedado con el bit s que nos dice que es suid, ahora vamos al otro usuario el usuario fox, que esta
trabajando en la misma carpeta vemos la aplicación top y la ejecutamos para comprobar que esta
aplicación esta corriendo como pedro hacemos ps xau que nos va a mostrar todos los procesos de
forma extendida junto con el usuario que los corre y vamos a filtrarlo por como se llama el
proceso, se llama top.
Ahí ya podemos apreciar que aunque es fox el que inicio el proceso top, este esta corriendo a
nombre de pedro gracias a el bit de suid que lo permite.
Bueno el ejemplo de sticky bit va así:
Creamos una carpeta por ejemplo sticky , le agregamos todos los permisos ahí ya comprobamos
luego le agregamos el bit de sticky bit en el rol de otros con la t y ahí ya nos queda el directorio
con el sticky bit. En tramos, creamos un archivo le concedemos todos los permisos , nos
cercioramos de los permisos del archivo y que la carpeta efectivamente tenga el sticky bit.
Cambiamos de usuario, este es el usuario fox, entramos en la carpeta sticky, observamos que hay
un archivo del usuario pedro llamado hola, como tiene todos los permisos procedemos a borrarlo.
Pues no lo permite porque la carpeta que lo contiene que ese sticky tiene el sticky bit.
Al terminar esta segunda lección ya estarás familiarizado con el ambiente Linux y en la tercera
entrega de este curso, comenzaras a utilizar este magnifico sistema operativo atravez de los
comandos de Linux, así que no te lo pierdas.
¡No olvides que compartir es gratis!
Curso de Linux en español 3/60 – Comandos
Básicos y Salida Estandar
Compartir9
Twittear
Compartir
+1
Compartir 9
Esta es la tercera entrega del curso de Linux, en esta entrega vamos a tratar los siguientes temas:
1. Interface de shell.
2. Comandos básicos para manejar la interface de Shell.
3. La entrada estándar.
4. La salida estándar.
5. El error estándar.
6. CLI Command Line Interfase (Interface de Línea de Comandos)
Interface de shell
Ahora vamos a entrar en materia, primero vamos a ver cómo entramos a la interface básica de
usuario “la CLI“ (interface de comandos). Ahí vamos a ver los comandos básicos para poder
desenvolvernos, luego vamos a ver cómo se interactúa con la entrada y salida del flujo de datos de
shell , comencemos.
Primero que tenemos que hacer es ingresar en nuestro sistema.
Eso lo hacemos por medio de la consola de ingreso en el sistema operativo en este caso vamos a
utilizar el sistema operativo Linux Ubuntu nos da una pantalla que se llama login esta es la consola
por la que nosotros podemos ingresar al sistema operativo de forma remota por SSH o por telnet.
Este login nos muestra la versión del sistema operativo que estamos corriendo, en qué terminal la
estamos corriendo y luego nos muestra el nombre de la máquina, (login: ) a eso le vamos a llamar
prompt de login, porque es donde nosotros vamos a escribir nuestro usuario y contraseña para
poder ingresar. También vemos una raya titilante a la que vamos a llamar cursor.
Una vez ingresamos nos vamos a la información como la última vez que ingresamos, la versión del
sistema operativo y algunos paquetes que tenemos que actualizar (eso es diferente en las diferentes
distribuciones de Linux), este caso estamos utilizando Ubuntu.
¿Donde Estamos?
Acto seguido queremos ver dónde estamos parados en el sistema, es decir en el sistema de archivos
del sistema operativo donde estamos ubicados eso lo podemos saber con el comando pwd, aquí
vemos que estamos parados en /home/fox dentro del sistema de archivos de nuestro sistema
operativo Linux.
Este por ejemplo es MINIX qué es el sistema operativo que inspiró a Linux Torvalds a desarrollar
el sistema operativo Linux.
Aquí tenemos OpenBSD que es un UNIX BSD libre, aquí tenemos un compañero de él que es
NetBSD es otro y UNIX BSD libre y tenemos el tercer hermano de esta familia que es FreeBSD
que también es un UNIX libre.
Acá tenemos al sistema operativo INDIANA que es un sistema operativo basado en el antiguo
Solaris 11 que su kernel es la versión 5.11.
Por último tenemos el sistema operativo MacOS X en su versión LION que corre como vemos el
kernel Darwin. Este kernel como ya habíamos visto en la primera entrega de este curso, es el kernel
del sistema operativo de Apple esta es su versión 11.4.2.
Bueno volviendo a nuestro Linux ya sabemos, quiénes somos, en dónde estamos y en qué sistema
operativo estamos corriendo, pero ahora queremos saber lo siguiente:
Esto es lo mismo hacerlo con 1> y el archivo, porque resulta que en la shell el flujo de datos está
determinado por tres valores la entrada estándar que es 0, la salida estándar que es 1 y el error
estándar que es 2 en este caso sería la salida estándar que se representa por el 1 entonces por eso nos
da lo mismo colocar 1> y el archivo.
Pero resulta que cada vez que lo hagamos vamos a reemplazar el contenido del archivo, que hay si
nosotros queremos acumular la información qué sacamos de la salida estándar, eso es muy fácil
podemos colocar 1>> y vemos cómo va acumular línea a línea cada una de las salidas de los
comandos que nosotros le hayamos indicado, si damos el parámetro -a entonces vemos que nos
acumuló los que hizo con uname y luego los que hizo con uname -a.
Save
La entrada estándar también puede ser redirigida por ejemplo al comando cat le podemos indicar
que su entrada estándar es el resultado del archivo so.txt, entonces en ese caso nos muestra el
contenido del archivo hacia la salida estándar.
El error estándar se comportan muy parecido cómo se comporta la salida estándar, nosotros le
podemos pasar un parámetro por ejemplo: uname -y que no existe, entonces esto nos va a generar
un error contrario. tenemos el parámetro -a que sí existe qué es el que nos muestra todos los datos
del sistema operativo, entonces en este caso podemos redirigir uname -y pero no con el 1 sino con
el 2 porque esta salida que nos generó el error no es salida estándar, no es presentada por el 1 es
presentada por el 2 y esto se verá reflejado en el archivo qué queremos indicarlo por ejemplo el
archivo error.
Entonces vemos que si hacemos cat al archivo error nos va a mostrar el archivo que error que
acabamos de generar, de la misma forma también podemos acumular línea a línea estos mensajes de
error para que no los muestre log.
ps
ls
cp
mv
mkdir
Entre otros.
Como ya vimos el primer paso que tenemos que dar es ingresar en Linux y luego a una terminal,
(consola de mando CLI o Shell) una vez dentro del terminal podrás trabajar e ingresar comandos
como date qué es para ver la fecha y la hora actual.
cal qué es para ver el calendario con el día actual.
Y el comando uptime donde podemos ver la carga actual de sistema, cuánto lleva nuestro sistema
arriba y cuántos usuarios han ingresado en el sistema.
De ahora en adelante y hasta que termine el curso sólo vamos a ver los parametros básicos y más
frecuentes de cada uno de los comandos y servicios que veamos, porque si profundizamos en cada
uno de estos no terminamos nunca.
Más bien pueden realizar sus preguntas o sugerir los temas en los cuales desean que profundicemos.
De todos modos Linux y Unix cuentan con algo que se llama man page (páginas de manual) en las
cuales se profundiza más en los parámetros adicionales que tienen los comandos, éste man es muy
fácil de utilizar simplemente se teclea man espacio el nombre del comando y te muestra una
página del manual en la cual te explica más a fondo cuáles son los parámetros adicionales qué tiene
un comando específico.
Gestión de procesos
Ahora ya necesitamos comenzar a tener control de nuestro sistema, por lo menos a nivel del
usuario, lo primero que debemos aprender es que procesos están corriendo en nuestro sistema.
¿Porque?
Bueno, porque los procesos son la razón de sistema computacional, del computador u ordenador
como queramos llamarlo.
El procesador de palabras es un proceso, la hoja de cálculo es un proceso, el navegador de Internet
es un proceso y también cuando nosotros administramos un servidor, cualquier servicio que
prestemos nosotros eso es un proceso dentro de la máquina, entonces por eso necesitamos saber y
manejar qué son los procesos.
En la clase número 2 del curso estuvimos viendo qué son los procesos y como los manejan el
núcleo de Linux.
Comando PS
Ahora comencemos por poner este conocimiento en práctica el primer comando con el que vamos a
trabajar es ps este comando lo define la página del manual man page como una captura o snapshot
del estado de los procesos en el momento en el que se ejecutó el comando, en pocas palabras nos
muestran los procesos qué estaban corriendo un momento atrás.
En su forma básica ps nos muestra los procesos que estamos corriendo en el momento dado.
En este caso estamos corriendo en la terminal bash y el comando ps para abrir un poco nuestros
ojos pues podemos utilizar un parámetro qué es el parámetro x el parámetro x nos va a mostrar los
procesos que no están corriendo en una terminal específica ósea que están corriendo en background
que no están corriendo en primer plano sino que están corriendo atrás, entonces cuando ejecutamos
ps con el parámetro x nos va a mostrar nuestros procesos más los procesos de la máquina que están
corriendo en background .
Pero esto no es todo, si agregamos el parámetro a nos muestra los procesos de los usuarios tenemos
un panorama mucho más grande de lo que corre en nuestra máquina sin embargo de qué nos sirve
esto si no sabemos quién corre estos procesos bueno si le agregamos a ps xa el parámetro u nos
mostrará ahora el usuario que está corriendo cada uno de los procesos.
Tiempo de Procesamiento
El tiempo de proceso es el tiempo del procesador consumido por dicho proceso no se refiere al
tiempo que lleva activo desde que se ejecutó sino al tiempo de procesador que ha consumido, ya
que el proceso no se encuentra corriendo constantemente consumiendo el procesador sino que la
mayoría del tiempo permanece en espera.
¿Porque?
En los sistemas multitarea no se ejecuta varias tareas al mismo tiempo aunque pareciera,
simplemente se alternan el uso del procesador entre los procesos para dedicarle cierta cantidad de
tiempo el sistema operativo tiene un planificador (eso ya lo vimos en la clase número 2 de este
curso) este planificador se encarga de gestionar el tiempo de proceso.
Los estados no son más que las acciones que estos procesos llevan a cabo en su vida útil aquí
tenemos una tabla que hice hace un rato, dónde están los identificadores de cada uno de esos
estados.
Entonces está que:
Comando PSTREE
El comando pstree nos muestra el mismo árbol que nos muestra ps xauf pero de una manera más
simple sin detalles, también podemos mostrar el PID dentro de pstree esto lo logramos con el
parámetro -p, ahora con el parámetro -g podemos mostrar el grupo del usuario que corre el proceso,
con entonces podemos hacer pstree -p -g.
Save
Algo muy importante de conocer el árbol de la tabla de procesos de nuestro sistema es que podemos
matar los procesos cuando sea necesario esto lo podemos hacer con el comando kill el comando.
Comando KILL
kill tiene las siguientes sintaxis:
kill espacio y el PID del proceso que queremos matar.
Entonces tenemos aquí unos ejemplos:
Hacemos ps u para ver los procesos que estamos corriendo nosotros como usuario vemos 2
procesos llamados pico estos procesos los vamos a matar de dos formas una de una forma sencilla
ejecutando kill y el PID del proceso entonces nos termina el proceso.
El otro lo vamos a matar con kill -9 y el PID en este caso nos mata el proceso con la señal Kill.
Recuerden que la segunda clase hablamos de las señales. En el Primer caso enviamos la señal 15 lo
que nos terminó el proceso, pero en algunos casos eso no es suficiente porque en el proceso se
queda atascado haciendo algo y nosotros necesitamos terminar el proceso inmediatamente por eso
utilizamos el parámetro -9 que envió la señal de kill y terminó el proceso inmediatamente sin
esperar nada.
Comando Killall
Tenemos otro comando que se llama killall hace lo mismo kill pero no mata por medio del PID sino
por medio del nombre del proceso que estamos ejecutando. Entonces tenemos otra vez nuestro ps u
y los dos los vamos a matar con un solo comando killall.
Aquí podemos ver como los dos mueren al mismo tiempo con killall pico y vamos a repetir el
mismo ejemplo con killall -9 pico y aquí vemos como los dos procesos muere con la señal kill.
Esto de las señales lo veremos más adelante en detalle cuando estemos viendo la parte de
administración de sistema como usuarios root por ahora nos vamos a enfocar sólo en las
funcionalidades de usuario.
Bueno, hasta aquí dejamos el manejo de procesos por ahora y nos vamos a enfocar en el manejo de
archivos.
Como ya vimos en la clase de número 2 el sistema de archivos esta organizado de forma jerárquica
es decir carpetas que contienen subcarpetas en forma de árbol y éstas contiene a su vez ficheros,
bueno pero.
Comando ls
Para esto nos ayudaremos del comando el comando ls.
El comando ls nos muestra los archivos y los ficheros que tenemos en el punto donde estamos
parados, si ejecutamos ls con el parámetro -l nos enseña la misma información pero con datos
detallados primero permiso de archivos, luego la cantidad de Link duros o literales que hace
referencia a nuestro archivo, el usuario propietario, el grupo propietario, el tamaño del archivo
y en el caso de los directorios él toma un valor en relación al tamaño de los bloques del sistema que
en este caso son 4k. La fecha y hora de la última modificación del del archivo que son las tres
columnas que siguen y para finalizar el nombre del archivo.
Con el parámetro -a nos muestra los archivos ocultos y digo ocultos porque simplemente son
precedidos por un punto qué el ls predeterminadamente no lee pero son iguales que otros archivos
regulares del sistema, entonces podemos ejecutar el comando ls -a o ls -la combinando los
parámetros para ver estos archivos.
Save
Para aclarar cada vez que hacemos ls vamos a ver dos directorios en todas las carpetas donde
estemos estos directorios son el punto (.) y el dos puntos (..) Estas carpetas directorio son
simbólicos y actúan como una brújula para nosotros ubicarnos en el sistema.
El directorio (.) significado de la carpeta donde estamos actualmente es decir si nosotros hacemos
pwd vemos que estamos parados en /home/fox eso es representado dentro de directorio como (.)
Entonces daría lo mismo referencia (.) o referenciar /home/fox estando parados en este punto.
Lo mismo pasa con el directorio (..). El directorio(..) representa al directorio anterior al que estamos
parados en este caso sería /home por ende cualquier referencia que hagamos estando parados en
/home/fox .. Estaríamos hablando a /home.
El ls también nos permite hacer un barrido de las carpetas y subcarpetas de forma recursiva esto lo
podemos hacer con el parámetro -R cuando queremos saber los detalles de un archivo podemos
hacer ls –lR y el nombre de archivo.
También lo podemos hacer en grupo de archivos utilizando el comodín asterisco colocándolo en los
archivos que preceden o anteceden determinada cadena de caracteres como por ejemplo queremos
listar todos los .jpg que tenemos en nuestro directorio lo podemos hacer con * .jpg también
queremos listar todos los archivos que comienzan por ala, entonces ejecutamos ls ala* y nos va a
mostrar todos los archivos que comiencen por ala.
El ls soporta todos los comodines de expresión regular pero esto lo vamos a ver cuando estemos
viendo Shell scrip más adelante. Esto de mirar los detalles de un archivo con solo ls – l no funciona
con los directorios ¿porque por qué? cuándo ejecutamos ls – l a un directorio este nos muestra el
contenido del directorio entonces para poder ver los detalles de un directorio tenemos el parámetro -
d que por ejemplo ls –ld funcionaría de la misma forma que como vimos con los archivos
anteriormente nos muestra los detalles.
Ahora para poder ver el tamaño de una mejor forma de una forma más entendible ls también
soporta el parámetro -h qué significa formato legible al humano ejecutando ls –lh nos permite ver
los tamaños de los archivos en bites, Kb, Mb, Gb y Tb,
Como mera curiosidad, una versión resumida del ls –l qué es el comando ll que es soportado por
muchas versiones de UNIX.
Para terminar con el comando ls tenemos el parámetro –color este parámetro es muy útil porque nos
muestra en colores los archivos y directorios teniendo como base su extensión y sus permisos, el
parámetro –color en la mayoría de los distribuciones viene como un alias de la Shell bash es decir
cualquier ejecución del comando ls con cualquier parámetro nos va a mostrar los archivos
coloreados dependiendo de su extensión y sus permisos.
Comando MKDIR
Bueno, lo primero es la organización y para eso es imprescindible la creacion de carpetas con el
comando mkdir espacio y el nombre la carpeta, además de esto si queremos borrar carpetas que no
tengan ninguna archivo o carpeta dentro lo hacemos con el comando mrdir.
¿Cómo gestionamos los archivos que contienen estas carpetas?
Bueno existen tres comandos básicos para esta misión que son:
1. cp para copiar
2. mv para mover
3. rm para borrar
Los parámetros más importantes son -r que copiar recursivamente un archivo o un directorio no
importando que tenga que tenga archivos directorios adentro, la -f qué fuerza la copia de una la
copia de un archivo o directorio no importando que existe el destino, -p o preserva los permisos que
tenía ese archivo, es decir cuando se copia, la copia resultante tiene los mismos permisos que tenía
el origen y –v “verbose” que nos muestra todo lo que se copia hacia la salida estándar, -v no es muy
recomendado cuando estás conectado por ssh o una sección remota y haces copia de muchos
archivos ya que como tiene que mostrar a la salida estándar todo archivo que copia eso puede
demorar el proceso.
El rm en su forma básica rm sólo borrar archivos que se le indiquen, no borra directorios. Para
poder que borre directorios necesita el parámetros -r para que tome el borrado de forma recursiva y
así pueda borrar carpeta con sus archivos y subcarpetas.
También se le puede indicar el parámetro -f para que fuerce el borrado de algunos archivos.
Como en otros comandos el rm también funciona con comodines es decir puedes borrar con rm -rf
* en la carpeta donde te encuentras y borrar todo lo que hay allí para bajo de forma recursiva pero
cuidado con este comando porque no vas a querer hacer rm a la raíz (rm –rf /) porque esto te va a
causar un severo dolor de cabeza.
De estos 3 comandos nos queda mv.
El mv nos mueve un archivo de una ubicación del disco a otra o de una carpeta a otra. El mv tiene
una peculiaridad y es que cuando se mueve el archivo de un lugar a otro dentro del mismo
dispositivo de almacenamiento el no mueve físicamente la información simplemente cambia el
apuntador de un lado a otro dentro del índice de archivos del sistema de archivos, pero su ubicación
física no cambia.
Cuando movemos de un dispositivo de almacenamiento a otro dispositivo de almacenamiento si se
comporta haciendo una copia hacia el otro disco dispositivo y borrando el origen.
Por eso es que cuando copiamos dentro de un mismo disco dispositivo almacenamiento es más
lento que cuando simplemente lo movemos porque cuando movemos sólo cambia el apuntador,
mientars que cuando copiamos estamos generando una duplicación de los datos qué tienen que ser
escritos en otro ubicación del disco.
Comando FIND
Ahora tenemos las herramientas para gestionar nuestros archivos podemos ir más allá y podemos
efectuar búsquedas en otro sistema esto lo hacemos con el comando find la sintaxis del comando
find la sintaxis básica es la siguiente find ruta –name y la expresión para buscar el archivo que
queremos encontrar por ejemplo find / – name uname que es un comando que ya conocemos
mucho, entonces él comando nos busca en la raíz el comando uname de forma recursiva. En este
caso estamos utilizando 2> /dev/null para que no nos muestre los mensajes de error ya que como
estamos como un usuario y estamos buscando en todo el sistema desde la raíz entonces nos va a
sacar algunos errores de permisos no queremos que salgan entonces por eso vamos a redirigir el
error estándar hacia /dev/null.
Con find también podemos hacer búsquedas y comodines como por ejemplo * un ejemplo de puede
ser find /-name libe* y esto nos va a mostrar todos los archivos que contengan al principio lib
también podemos utilizar find /-name *lib y esto nos va a mostrar todos los archivos que terminen
en lib para terminar en el ejemplo podemos colocar find / -name lib y nos va a mostrar todos los
archivos que encuentre donde dentro de la cadena de caracteres se encuentre lib como en el caso de
los comandos anteriores find también soporta expresiones regulares pero este te ma vamos a dejarlo
para una clase futura en la cual solamente vamos a dedicar el comando find.
MC | midnight commander
Save
Para finalizar tenemos aquí una herramienta muy útil para la gestión de archivos y dispositivos de
almacenamiento se llama mc dice el programa MC o midnight commander, comandante de
medianoche que es un clon de una utilidad para DOS que se llama Norton Commander
desarrollada por el famoso hacker de DOS Peter Norton.
MC por su lado fue desarrollado por ese entonces joven mexicano Miguel de Icaza conocido
contribuidor del software libre en proyectos como GNOME y MONO de quien es fundador, siendo
MC su primer proyecto como contribución a GNU. Miguel de Icaza elaboró una herramienta
maravillosa que aun hasta hoy ha sido portada a la mayoría de los sistemas operativos tipo Unix, de
hecho también existe una versión de MC para Windows.
Bueno cuando entramos al MC podemos observar que está dividido en 5 partes diferentes un menú
superior, un panel izquierdo, un panel derecho, un prompt de Shell para ejecutar comandos y un
menú de teclas de función.
La barra del menú nos muestra las opciones del panel izquierdo, las opciones del panel derecho y
las funciones de archivos, las utilidades y las opciones del programa cada panel independiente nos
muestra 2 vistas de 2 ubicaciones diferentes del sistema también nos indica la utilización del
dispositivo de almacenamiento en el que estamos parados en ese momento con su utilización y el
total del dispositivo de almacenamiento, el prompt nos permite ejecutar cualquier comando de
Shell, con la combinación de teclas CONTROL o desaparecemos la interface del mc lo que nos
muestra la salida estándar del shell y si queremos ver otra vez la interface del MC volvemos con
CONTROL o.
El menú de teclas de función es la parte más útil de este programa ya que nos permite hacer las
mismas funciones con los comandos que acabamos de ver pero en un ambiente pseudografico,
pseudografico porque utiliza las librerías ncurses y slang para dibujarnos en la pantalla con
caracteres, una interface.
Entonces las teclas de función son
F1 para ayuda.
F2 para el menú de usuario.
F3 para ver.
F4 para editar.
F5 para copiar.
F6 para mover o renombrar.
F7 para crear un directorio.
F8 para borrado singular o también recursivo.
F9 para el menú de los paneles.
F10 para salir de la aplicación.
Bueno así llegamos al final de esta cuarta clase de nuestro curso de Linux ya vamos adentrándonos
más en lo que es en nuestro sistema operativo y no olviden que lo que aprenden aquí no sólo se
aplica el sistema operativo Linux si no que la mayoría también se aplica en todos los sistemas
parecidos a UNIX o basados en UNIX.
Curso de Linux 5/60 | Compresión y
empaquetamiento
Compartir4
Twittear
Compartir
+1
Compartir 4
En esta entrega del curso Linux vamos a ver formas de empaquetar y comprimir y descomprimir
archivos en Linux, y veremos varios comandos que nos darán distintos niveles de compresión.
gunzip linux-2.6.0.tar.gz
Como vemos el archivo linux-2.6.0.tar.gz al descomprimirlo ocupa 189Mb.
gzip linux-2.6.0.tar.gz
gunzip linux-2.6.0.tar.gz
Ahora vamos a utilizar otro comando de compresión que se llama BZIP2.
bzip2 linux-2.6.0.tar.gz
esperamos que comprima y ahora vamos a notar que el tamaño del archivo comprimido con bzip2
es 10Mb menos que el comprimido con bzip. El bzip2 nos da una mayor cantidad de compresión
que el gzip
ejemplo:
bunzip2 linux-2.6.0.tar.bz2
entonces vemos que tenemos nuestro archivo .tar de 189Mb como lo teníamos antes.
Archivos TAR
¿que son los archivos tar? la palabra tar viene de Tape ARchiver que es el comando en Unix que se
utilizaba y que aun se utiliza para guardar la información en cintas, las cintas de bakup donde se
almacena mucha cantidad de información, para poder tener un respaldo real en caso de emergencia,
incendio y ese tipo de cosas entonces el tar es un comando muy extenso, cuando estemos en la
parte de administración vamos a verlo más a fondo pero por ahora solo vamos a ver las funciones
básicas. La primera que vamos a ver es el desempaquetamiento.
Ejemplo:
tar xf linux-2.6.7.tar
Al desempaquetar el archivo linux-2.6.7.tar vamos a ver que nos extrae el directorio de nombre
Linux-2.6.7 y dentro de este encontramos sub-directorios y archivos.
Parámetro vervox
Si al ejemplo anterior le agregamos el parámetro v que significa vervox nos va a mostrar todos los
archivos que son desempaquetados a la salida estándar de la Shell . Estamos viendo la salida de los
archivos que fueron desempaquetados.
Save
du -sh linux-2.6.7.tar
El parámetro -s nos permite globalizar todo el tamaño del directorio que queremos ver
el parámetro -h que nosotros ya lo hemos visto es el formato legible al humano, que nos
muestra la información en un formato más entendible.
Para seguir con nuestro ejemplo vamos a borrar el archivo tar para volver a empaquetar el
directorio que creamos al desempaquetar el archivo linux-2.6.7.tar con el siguiente comando:
rm -rf linux-2.6.7.tar
Ejemplo:
c es para copiar.
v para que nos muestre vervox como vimos ahorita en la extracción
f para file o sea que lo haga a un archivo.
Pasamos a comprobar que la operación fue todo un éxito con el siguiente comando
ls -lh linux-2.6.7.tar
Ejemplo:
Ejemplo:
Comprobamos que el archivo fue creado con el siguiente comando: ls -lh linux-2.6.7.tar.gz
Ahora vamos a utilizar el tar pero con el otro algoritmo de compresión que es el Bzip2 para esto
vamos a utilizar el parámetro j
Sintaxis:
ls -lh linux-2.6.7.tar.bz2
Ahora para desempaquetarlo y descomprimirlo lo hacemos con:
Ejemplo
t para visualizar.
v para que nos saque al estándar output.
f que significa que es un archivo.
tar tvf + nombre del archivo origen > nombre de archivo destino
Ejemplo:
Ejemplo:
Ejemplo:
Para comprimir un solo archivo simplemente damos el comando zip y el archivo de destino,
Sintaxis:
Ejemplo:
Ejemplo:
unzip linux-2.6.7.zip
Ejemplo:
unzip -v linux-2.6.7.zip
ls -lh Linux.2.6.7.rar
unrar x Linux.2.6.7.rar
comprobamos:
ls -lh
Bueno esto se acabo ya no hay más por esta clase, recuerden suscribirse por correo para recibir los
nuevos artículos de Linux desde el pie de pagina, recuerden que también estoy en Facebook como
efox desclasificado para los que quieran seguir las redes sociales y no olviden compartir si creen
que esta información les fue de utilidad y a quien crea que le puede ser de utilidad. Yo soy efox
desclasificado un enfoque diferente de la tecnología informática.
Curso de Linux 6/60 – Busquedas y Expresiones
Regulares
Compartir1
Twittear
Compartir
+1
Compartir 1
La búsqueda en Linux seria una tarea compleja si no existiera el comando find y greep estos nos
dan la capacidad de poder encontrar cualquier cosas este donde este, es aquí donde comenzamos a
percibir el poder informático que nos otorga Linux, sin duda disfrutaran mucho de este articulo.
Ahora el mismo ejemplo pero para archivos cuyo usuario sea root
find / -atime 30
find / -mtime 30
Esto nos daría los archivos que fueron accesados entre el día 30 y 90 o sea 60 días de rango.
También tenemos el parámetro mmin y amin que nos permite buscar en vez de rango de días rango
de minutos esto nos permite movernos en el rango de un día no como mtime que nos permiten
movernos en el rango de varios días.
Ejemplo de uso de mmin:
Save
Bueno eso es todo por esta entrega en el curso de Linux estoy feliz de volver estoy feliz de estar con
usted aquí entregándoles esta información qué sé que les gusta mucho y que es de su agrado y por
eso prometo solemnemente no dejar de hacer los articulos del curso Linux hasta que termine los 60
capitulos así que no se olviden por favor de compartir esta pagina en sus redes sociales, y
suscríbanse al canal no nada mas me Beneficia a mi sino a ustedes porque hay mas material y más
información.
yo soy efox declasificado un enfoque diferente de la tecnología informática.
Save
Bueno aquí vamos a llamar a nuestro editor de texto, lo podemos llamar de dos formas pico o nano.
Nano es su nombre real, entonces seria:
Sintaxis:
Editor de texto vi
Save
Bueno, ahora pasamos al editor vi, el editor vi tiene dos modos: un modo de edición y un modo de
línea de comandos él no tiene la edición ahí pura como lo tienen los otros editores y podemos
acceder a esta línea de comandos con:
En este caso estamos presionamos la tecla ESC y escribimos :w + el nombre del archivo que vamos
a grabar y él nos graba como otro archivo lo que tenemos en el bufer.
Modo de edición en vi
Entonces una vez tenemos la movilización básica dentro del Vi vamos a pasar a ver sus
caracteristicas.
la letra g que nos lleva desde el final del documento hasta el principio del documento.
La letra i nos permite pasar al modo de edición del editor vi, con la letra i activamos el
modo de edición y ya podemos escribir normalmente lo que queremos manejar dentro de
nuestro texto, de lo contrario nos tomaría los comandos de las letras que escribieramos.
Ahora si nosotros queremos borrar una línea lo hacemos tecleando rápidamente dd
Ahora si queremos borrar solamente una palabra lo hacemos con dw y nos va a borrar una
sola palabra.
Para efectuar una búsqueda lo hacemos ESC “:/” sin comillas y la palabra que queremos
buscar y así nos va a llevar hacia dónde está la palabra que estamos buscando.
Ahora si lo que queremos es cortar y pegar una línea de texto en particular entonces lo
vamos a hacer tecleando rápidamente yy + P qué sería para pegar entonces yy pp y nos pega
rápidamente la línea que queremos pegar y así lo podemos hacer sucesivamente para pegar
la línea varias veces.
Editor de texto MC
Save
Pasamos a nuestro editor MC el mc es un acompañante de gestor de comandos de mc para entorno
de texto pasamos al mcedit, el mcedit es un editor de texto un poco mas moderno en este editor
vamos a encontrar que todos se controla básicamente por las teclas de función que son las
siguientes:
Save
El último editor que quiero enseñarles es el JOE que es tradicional también del entorno de Unix.
Este se maneja con control+k y una letra
Control+k y h no saca la ayuda en pantalla para nosotros podernos mover dentro del editor este
también nos permite movernos libres borrar con la tecla back space, movernos con la espaciadora
sin ningún problema y bueno las funciones básicas de editor son:
Las variables
Las variables nos dan la capacidad de poder asignar un contenido X a un nombre, y este nombre
ocupara un espacio en la memoria RAM de nuestro ordenador, no se preocupen ya verán lo fácil
que es.
Para definir una variable en la Shell de Linux utilizaremos el comando export veamos su sintaxis.
Sintaxis:
export VARIABLE="Contenido"
Ejemplo:
export VARIABLE="Hola Mundo"
Llamada de la variable:
echo $VARIABLE
echo $1
echo $2
echo $3
Estructura IF
La estructura condicional en un shell script se define por IF (en español Si o Cuando) y su
funcionamiento es muy sencilla. If evalúa si la condición se cumple o no se cumple, si es verdadera
ejecuta un código, si es falsa, ejecuta otro código o continúa con la ejecución del shell script.
realizamos un ejemplo practico, volvamos a editar nuestra script:
pico script.sh
y ahora modificamos el script de manera que quede de la siguiente manera:
#!/bin/bash
if [ $1 = 1 ];
then
echo "el valor de la variable es (1)"
fi
Importante entre corchete y corchete del if hay que dejar un espacio despues de abrir el corchete y
dejar otro espacio antes de cerrar con corchete por ultimo no olvidar nunca el “;”.
Vamos a ver otra cosa dentro de la estructura if hay un else osea de lo contrario, que pasa si no se
cumple la condición entonces cuando esto pasa esta la estructura else que esta anidada dentro de if
por asi decirlo y vamos a colocar otro mensaje en este caso es () error, el valor de la variable no es
uno y ahí cerramos con el fi, grabamos y ejecutamos
if [ $1 = 1 ];
then
echo "el valor de la variable es (1)"
else
echo "error, el valor de la variable no es uno”;
fi
En este ejemplo donde al script le damos como parametro 1 nos arrojara el texto “el valor de la
variable es (1)” y en caso contrario si le damos un valor que no sea 1 nos arrojara el texto “error, el
valor de la variable no es uno”
Entonces cuando ejecutamos nuestro script segun el parametro que le demos nos arrojara diferentes
resultados como en la siguiente imagen.
Como podemos observar nuestro script con la estructura case funciona a la perfección.
Lo ejecutamos y ¿que vamos a ver? Vamos a ver que el hiso el ciclo del 1 al 10
1
2
3
4
5
6
7
8
9
10
Ahora editamos el script y vamos a pasarle como parámetro 2 variables una de inicio y otra de
finalización del conteo que serán el $1 y $2. Cuando ejecutamos nuestro Shell Script colocamos 1
10 y va a funcionar de la misma forma porque lo único que hicimos fue remplazar las variables.
for i in ‘seg $1 $2’;
do
echo $i
done
El ciclo WHILE
Ahora vamos a ver el ciclo WHILE. El ciclo while se utiliza mucho para los menús ya que el sigue
operando mientras se cumple la condición, también puede funcionar como el for entonces vamos a
establecer una variable i que es igual a 5, una variable x que es igual a 0 la palabra para iniciar la
estructura es while acuérdense que corchetes separados por espacio a lado y lado y le vamos a decir
que x es menor que i entonces mientras x sea menor que i la condición se cumplirá, si es mayor que
i se rompe el ciclo, vamos a colocar un ; y una linea abajo do y luego echo “mayor que 5 para
salir”. Entonces cuando sea mayor que 5 el ciclo se va a romper, mientras sea menor que 5 el ciclo
se va a cumplir, colocamos la función read, read nos va a leer la variable x que es donde vamos a
introducir el número para seguir el ciclo o romper el ciclo.
i=5
x=0
while [ $x -1e $i ];
do
echo "Mayor que 5 para salir"
read x
done
El UNTIL
El UNTIL funciona al contrario, el until mantiene el ciclo mientras sea mayor que i, en el ejemplo
de abajo el ciclo se va a cumplir solamente si es mayor que 5. Osea el ciclo until funciona igual que
el while pero al contrario.
i=5
x=0
until [ $x -le $i ];
do
Ejecutamos el script si colocamos un número mayor que 5 nuestro Script va a seguir haciendo el
ciclo pero si colocamos 5 entonces se va a romper.
Bueno esto es todo por esta clase haciendo un resumen vimos el ciclo for, el ciclo while, el ciclo
until, vimos las condicionales if, las condicionales case y también vimos el manejo de las variables
y la configuración de las mismas también vimos como invocarlas desde las líneas de comando
pasándolas como parámetros.
En la próxima clase vamos a ver la utilización practica de todos estos ejemplos en Script que
hagan funciones, que tomen información del sistema operativo para poder llevar acabo algún tipo
de función que nos sirvan en nuestra diaria utilización de nuestro sistema operativo Linux.
No se olviden que en el pie de pagina encontraran el formulario para subscribirse, y así no perderse
ningún capitulo del curso de Linux, ¡los espero en la próxima clase!
Curso de Linux 9/60 |Bash Script Básico II
Compartir3
Twittear
Compartir
+1
Compartir 3
Hoy vamos a ver nuestra novena clase del Curso de Linux es la segunda parte de Shell Script
básico, ya explicamos los siguientes apartados
En el segundo caso colocamos df –ph seguido por el mismo mensaje del caso uno y un read
y cerramos el caso 2 con ;;
En el caso 3 vamos a colocar el comando w para ver los usuarios que están ingresados en el sistema
seguido por el mismo mensaje del caso uno y un read y cerramos el caso 3.
Abrimos el caso 4 que seria para la carga del sistema limpiamos la pantalla ahora colocamos un
uptime para que nos muestre tanto lo que lleva arriba el sistema como la carga que tiene en el
momento, pegamos lo que tienen los otros casos y cerramos,
En el ultimo caso *) el caso donde no sera ninguno de los anteriores colocamos clear para que nos
limpie la pantalla entonces aquí terminamos el caso lo cerramos y nos disponemos a cerrar la
estructura con esac que es case al revés.
Una vez terminado el Script quedaría de la siguiente forma:
!#/bin/bash
x=0
y=4
while [ $x –ls $y ];
do
clear
read x
case $x in
1)
clear
ps xa | wc -l
echo “pulse una tecla para continuar…….”
read
;;
2)
clear
df –ph
echo “pulse una tecla para continuar...”
read
;;
3)
clear
w
echo “pulse una tecla para continuar...”
read
;;
4)
clear
update
echo “pulse una tecla para continuar...”
read
;;
*)
clear
;;
esac
done
Ahora vamos a la línea de comando y ejecutamos nuestro comando menú (./menú.sh) y nos va
amostrar las opciones.
Estructura de comando
Ahora vamos a ver el caso del comando por parámetros, entonces vamos a crear un archivo que se
llame mostrar.sh al crear mostrar.sh obviamente le vamos a iniciar el encabezado que le indica al
interprete que es un bash script y vamos a utilizar la estructura if de la siguiente forma.
if [ ];
then
Una vez tenemos muestro esqueleto de la estructura vamos a crear las condiciones
1. Primera condición será [ $1 == “-p” ]; seguido de then y ejecutará el comando ps xa | wc –l
esta condición nos mostrará la cantidad de procesos activos en el sistema.
2. La segunda condición será [ $1 == “-e” ]; seguido de then y el comando df –ph esta
condición nos mostrará el espacio en disco.
3. En el tercer caso colocaremos el comando w y la condición será [ $1 == “-u” ]; esta
condición nos mostrara los usuarios activos actualmente en el sistema.
4. Por ultimo en la siguiente condición será [ $1 == “-c” ] para que nos muestre la carga del
sistema actualmente y le vamos a colocar el comando uptime que nos muestran estos datos.
Luego vamos a hacer una pequeña ayuda como la tienen los comandos por lo general vamos a
colocar un –h que nos va a imprimir la ayuda y vamos a hacer una pequeña ayuda a punta de echos,
y quedará de la siguiente manera:
echo “Mostrar estadísticas del sistema Version 0.0.1”
echo “”
echo “Ayuda:”
echo “-p Cantidad de procesos ”
echo “-e Espacio en disco”
echo “-u Usuarios de sistema”
echo “-c Carga del Sistema ”
echo “-h Muestra esta ayuda”
finalmente el script completo quedará de la siguiente manera:
!#/bin/bash
if [ $1 == “-p” ];
then
ps xa | wc -l
fi
if [ $1 == “-e” ];
then
df -ph
fi
if [ $1 == “-u” ];
then
fi
if [ $1 == “-c” ];
then
uptime
fi
if [ $1 == “-h” ];
then
fi
Recordemos que siempre que terminemos de editar un script debemos de darle los permisos de
ejecución con chmod u+x y el archivo.
Ahora vamos a la línea de comando y ejecutamos nuestro comando menú (./mostrar.sh -h) y nos va
amostrar las opciones.
Con esto vemos la utilización de algunas de las estructuras que vimos en el capitulo Shell Script
Básico I y su utilización en la practica, en las próximas 2 clases vamos a ver funciones mas
avanzadas para Shell Script que van a hacer que nuestros Scripts sean más potentes y vamos a ver
más aplicaciones para poder sacarle jugo al sistema operativo por medio de los Scrip de Shell.
OPERADORES NUMERICOS
-eq Igual que.
-ge Mayor o igual que.
-gt Mayor que.
-le Menor o igual que.
-lt Menor que.
-ne Distinto que.
Bueno vamos a comenzar por los operadores, los operadores que vamos a ver son los
matemáticos, creamos un archivo if.sh le colocamos el encabezado y vamos a utilizar la estructura
if porque es la que mejor nos puede ilustrar los operadores, vamos a pasarle parámetros, vamos a
utilizar $1 y $2 para comparar, el primero que vamos a utilizar es el:
Igual que, que es -eq entonces colocamos echo que nos muestre si se cumple y le agregamos los
permisos de ejecución , una ves le agregamos los permisos de ejecución pues hacemos la
comparación si es igual coloca el mensaje, si no es igual pues no coloca el mensaje y el código será
el siguiente.
OPERADORES DE CADENA
= Iguales
!= Diferentes
-n Con longitud mayor que 0
-z Con longitud igual a 0 o vacío
EJEMPLO diferentes
La diferencia != es lo inverso a igual que si damos como parámetros abc y xyz nos da porque es
diferente, pero si damos abc abc no imprimirá hola porque es igual.
#!/bin/bash
if [ $1 != $2 ];
then
echo “hola”
fi
EJEMPLO con longitud mayor que 0
Vamos a medir si la cadena viene vacía o no entonces primero con –n vamos a ver que la cadena
tenga un contenido entonces colocamos una variable que se llama cadena con un contenido y vamos
a decirle al operador que nos verifique si esa cadena tiene un contenido, ejecutamos nuestro script y
automáticamente nos muestra el mesaje hola
#!/bin/bash
cadena=’j’
if [ -n $cadena ];
then
echo “hola”
fi
OPERADORES DE ARCHIVO
-d es un directorio
-e existe el fichero
-f es un fichero ordinario
-r es leíble
-s es no vacío
-w es escribible
-x es ejecutable
-o eres el dueño del fichero
-G el grupo del fichero es igual al tuyo
-nt fichero1 es mas reciente que fichero2
-ot fichero1 es mas antiguo que fichero2
Ahora vamos a ver los operadores de archivo primero vamos a verificar si un archivo es directorio,
vemos que al correrlo nos muestra que es un directorio vamos a borrar esta partecita que nos
sobraba (cadena=’ ’) y vamos a verificar si no es un directorio entonces como este es un archivo
regular como vamos a ver aquí en el ls primero vamos a ver prueba_if que es un directorio y
prueba_if2 es un archivo regular, por eso en la primera prueba nos dio que era un directorio y en la
segunda no nos dio porque era un archivo regular.
EJEMPLO es un directorio (prueba1)
#!/bin/bash
if [ -d ./prueba_if ];
then
echo “hola”
fi
EJEMPLO es leible
#!/bin/bash
if [ -r ./prueba ];
then
echo “hola”
fi
Lo ejecutamos y el archivo prueba nos dice que no se puede leer, Porque no se puede leer? Porque
es de root y no tiene absolutamente ningún permiso, estamos como el usuario fox pero entonces si
le colocamos prueba_if2 si nos lo va poder leer entonces si se cumple la condicional.
#!/bin/bash
if [ -r./prueba_if2 ];
then
echo “hola”
fi
Con w vemos que el archivo es escribible entonces verificamos los permisos y vemos que se
cumple la variable porque el archivo es escribible
EJEMPLO es escribible
#!/bin/bash
if [ -w./prueba_if2 ];
then
echo “hola”
fi
Luego vamos a ver si el archivo es ejecutable y efectivamente se cumple cuando es ejecutable
EJEMPLO es ejecutable
#!/bin/bash
if [ -x./prueba_if2 ];
then
echo “hola”
fi
y si lo hacemos con ./prueba_if3 pues que no es ejecutable pues no se cumple la condicional.
Ahora vamos a verificar si el archivo pertenece a quien esta ejecutando el scrip con el operador –o,
aquí vemos que se cumple porque el usuario es fox, si nosotros ejecutamos por ejemplo sobre
./prueba que pertenece a root pues entonces no se va a cumplir la condicional porque ./prueba no
pertenece a fox que es el usuario que lo esta ejecutando
OPERADORES BOLEANOS
! Negacion
-a and
-o or
Los operadores boléanos funcional de la siguiente forma vamos a crear 4 parámetros con $1 $2 $3
$4 y a ellos le vamos a colocar la comparación de equivalencia numérica entonces primero vamos a
ver el operador and (-a) ósea el y para que se cumpla la equivalencia del $1 $2 y el $3 $4
EJEMPLO and
#!/bin/bash
if [ $1 -eq $2 -a $3 -eq $4 ];
then
echo “hola”
fi
Entonces grabamos nuestro Scrip y lo ejecútanos como lo vamos a ejecutar? Pues teniendo 2
igualdades, entonces vamos a colocar 1 1 como parámetros $1 $2 y luego 2 2 como parámetros $3
$4 y se nos cumple cuando cambiamos un parámetro pues entonces no se nos cumple porque and (-
a) obliga a que las 2 condicionales se cumplan para poder cumplir la otra condicional.
Ya cuando pasamos al or (-o) se puede cumplir o una o la otra si nosotros volvemos y hacemos el
ejemplo y pasamos 1 1 2 2 se cumple una o la otra porque las 2 son iguales, luego 1 1 2 3 se cumple
una de ellas por eso también se cumple la condicional pero si colocamos 1 3 2 3 no se cumple
ninguna de las 2 igualdades entonces no nos muestra el aviso hola
EJEMPLO or
#!/bin/bash
if [ $1 -eq $2 -o $3 -eq $4 ];
then
echo “hola”
fi
OPERADORES ARITMETICOS
+ Suma
-Resta
\* Multiplicación
/ División
Después siguen los operadores aritméticos son con los que podemos hacer operaciones para esto se
utiliza el comando expr y vamos a hace primero una suma 20+30
EJEMPLO suma
#!/bin/bash
expr 20 + 30
ejecutamos nuestro Scrip obviamente nos da 50. Luego vamos a hacer una resta entonces le
restamos a 30 20
EJEMPLO suma
#!/bin/bash
expr 30 - 20
guardamos nuestro Scrip , lo ejecutamos nos va dar 10. Vamos con la multiplicación el de la
multiplicación es el * colocamos 30*20 guardamos pero aquí hay una cosa si nostros ejecutamos
nuestro Scrip va a presentar un error de sintaxis porque se tiene que colocar una contra barra, contra
slash para que para que el asterisco funcione
EJEMPLO multiplicacion
#!/bin/bash
expr 30 \* 20
Así ya nos da la multiplicación bien. Ahorita vamos a ser la división se hace con la barra normal
ósea el slash si dividimos 30 entre 20
EJEMPLO División
#!/bin/bash
expr 30 / 20
pues nos va a dar 1.25 pero el sistema redondea a 1 si tiene alguna duda pues entonces colocan 40
/20
EJEMPLO Division 2
#!/bin/bash
expr 40 / 20
esto nos va a dar 2. Con esto terminamos la parte de los operadores y entramos en la parte de los
arreglos.
ARREGLOS
Los arreglos son variables que tienen varios datos dentro, no solo tienen un dato sino que tienen
varios datos. Entonces comenzamos nuestro Scrip con el encabezado que ya sabemos al interprete
de la bash vamos a declarar nuestra variable que va a ser una variable llamada frutas y dentro va
tener varios datos como en una especie de casilleros, eso se llama arreglo vamos a colocar en la
posición 1 la fruta limón luego vamos a copiar idéntico la sintaxis de la array vamos a replicarla
otros 4 espacios mas y vamos a poner las demás frutas manzana, platano, naranja y pera, luego
vamos a nombrar cada una de las casillitas le vamos a colocar el numero que sigue
#!/bin/bash
frutas [0] =’limon’
frutas [1] =’manzana ’
frutas [2] =’platano’
frutas [3] =’naranja’
frutas [4] =’pera’
Aquí ya tenemos nuestro arreglo completo y podemos pasar ahora como se imprime, con un echo si
nosotros queremos imprimir una casilla en particular pues colocamos el símbolo de pesos llaves
luego el nombre de la variable y entre corchetes la posición en el arreglo
#!/bin/bash
frutas [0] =’limon’
frutas [1] =’manzana ’
frutas [2] =’platano’
frutas [3] =’naranja’
frutas [4] =’pera’
echo ${frutas[1]}
Entonces grabamos nuestro Scrip, le colocamos los permisos de ejecución lo ejecutamos y nos va
amostrar la posición donde esta fruta manzana si nosotros cambiamos el numero digamos por el
numero 4 entonces nos va a imprimir pera.
Que pasa si queremos verlos todos entonces colocamos @ dentro de la casilla y nos va a mostrar
todo el contenido del arreglo
#!/bin/bash
frutas [0] =’limon’
frutas [1] =’manzana ’
frutas [2] =’platano’
frutas [3] =’naranja’
frutas [4] =’pera’
echo ${frutas[@]}
Entonces ya queda un poquito claro que es una variable tipo arreglo, pero hay otra forma de
declarar las variables tipo arreglo con declare –a abre paréntesis y cada uno de los datos que están
relacionados al arreglo se colocan entre comillas separadas por espacio, comilla simples entonces
hacemos lo mismo limón manzana, platano, pera, naranja vez tenemos colocados nuestros datos del
arreglo procedemos a asignarle la variable frutas
#!/bin/bash
declare –a frutas=(‘limon’ ‘manzana’ ‘platano’ ‘pera’);
echo ${frutas[@]}
Ahora grabamos y ejecutamos nuestro arreglo que nos muestra limón manzana bueno todos los
miembros del arreglo si nosotros otra vez colocamos la posición del arreglo entonces nos va
amostrar cada uno de los diferentes datos en las diferentes posiciones del arreglo ,como habíamos
echo en la primera forma.
FUNCIONES
Una vez terminamos con los arreglos vamos a hablar de las funciones, las funciones son pedazos de
código que se pueden reutilizar dentro de nuestro código entonces como lo hacemos? Lo hacemos
con function damos el nombre de la función abrimos llaves colocamos lo que va hacer esa función y
luego cerramos llaves, en este caso vamos a colocar el comando crear,
#!/bin/bash
function limpiar {
clear
}
vamos a declarar otra función que se llama n_procesos y dentro de n_procesos vamos a colocar ps
xa | wc que es Word count -l que es cuenta el numero de líneas y así vamos a saber la cantidad de
procesos que están corriendo en el momento
function n_procesos {
ps xa | wc -l
}
de la misma forma que lo hicimos arriba, vamos a declarar otra función que se va a llamar suma con
la cual vamos a sumar 2 números como hicimos con en la parte de los operadores aritméticos
entonces vamos a poner expr 10 + 10
function suma {
expr 10+10
}
entonces ahora vamos a llamar la primera función que es limpiar ejecutamos enteste caso no
pasamos parámetro y nos limpio la pantalla
#!/bin/bash
function limpiar {
clear
}
function n_procesos {
ps xa | wc -l
}
function suma {
expr 10+10
}
limpiar
Ahora vamos a quitar este limpiar y colocamos n_procesos, cuando ejecutamos n_procesos nos va a
mostrar el numero de procesos que están corriendo que es 183
#!/bin/bash
function limpiar {
clear
}
function n_procesos {
ps xa | wc -l
}
function suma {
expr 10+10
}
n_procesos
Luego vamos a borrar n_procesos y colocamos suma, cuando colocamos suma guardamos y
ejecutamos el scrip nos trajo la suma 10+10 que teníamos en función
#!/bin/bash
function limpiar {
clear
}
function n_procesos {
ps xa | wc -l
}
function suma {
expr 10+10
}
suma
Si queremos las podemos llamar todas , entonces colocamos la función limpiar como la función
n_procesos y la función suma una debajo de la otra y cuando lo ejecutemos vamos a ver que las 3
funciones se ejecutaron una detrás de la otra
#!/bin/bash
function limpiar {
clear
}
function n_procesos {
ps xa | wc -l
}
function suma {
expr 10+10
}
limpiar
n_procesos
suma
Entonces guardamos nuestro archivo, ejecutamos y limpio , 183 procesos y 20 que es la suma de
10+10
ASIGNACIÓN
Ahora vamos a ver la asignación, nosotros podemos ejecutar comandos y el resultado de esa
ejecución la podemos asignar a una variable, entonces vamos a ver el ejemplo que hemos echo
durante todas estas clases que es la de contar los procesos con ps xa | wc –l entonces el numero se
lo vamos a agregar a la variable procesos, entonces el comando se ejecuta y el resultado se le asigna
a procesos y echo mostrará el contenido de la variable que va a ser el numero de procesos que están
en ejecución actualmente.
#!bin/bash
procesos=$(ps xa | wc -l)
echo $procesos
entonces guardamos, vamos a darle los permisos de ejecución, siempre se le debe dar los permisos
de ejecución para que funcione el scrip (chmod u+x asignacion.sh) y ejecutamos el Scrip
asignación y nos va a dar como resultado 184 procesos que están corriendo.
También lo podemos hacer con otros comandos digamos que vamos a contar el numero de archivos
que hay donde estamos parados con ls –l
#!bin/bash
procesos=$(ls -l | wc -l)
echo $procesos
Ejecutamos el script y nos dará el número de archivos que hay en la ubicación actual. Esto es muy
potente si nosotros lo combinamos con otro comandito. Entonces primero vamos a ver un archivo
que es el archivo donde están los usuarios (root@ubuntu-virtual:~# cat /etc/passwd) del sistema
linux , vemos que es un archivo que esta separado por carácter : entonces vamos a tratarlo, vemos
que esta el usuario una x y el id del usuario, vamos a utilizar el comando awk. El comando awk con
el parámetro menos –F (mayúscula) nos va diferenciar cual es el separador que va a ir entre
comillas dobles entonces colocamos el : que es nuestro separador , luego dentro de comillas simples
y dentro de llaves vamos a colocar la palabra print y una variable, el va comenzar a contar las
columnas 1 2 3 4 entonces la primera columna seria la columna 1 que seria la del usuario, entonces
vamos a darle cat /etc/passwd y por medio de la tuberia vamos a pasarle la salida a la awk para que
nos filtre y nos separe por los 2 puntos (:)
root@ubuntu-virtual:~#awk -F “:” ‘{print $1}’
^c
root@ubuntu-virtual:~# cat /etc/passwd | awk -F “:” ‘{print $1}’
Entonces aquí ya tenemos que la primera columna que es el $1 es la columna del usuario, si le
ponemos $2 es donde estaba la x y si le colocamos $3 ya nos da el id de los usuarios que estan en el
passwd entonces esto lo vamos a meter dentro de un scrip se lo vamos a metre dentro a una variable
para utilizarlo
root@ubuntu-virtual:~# cat /etc/passwd | awk -F “:” ‘{print $3}’
Entonces editamos nuestro scrip asignacion.sh colocamos nuestro comando luego colocamos un
filtro adicional con el grep que ya habiamos visto en las clases pasadas y cvamos a buscar el usuario
fox para que nos de unicamente el id del usuario fox porque ya nos habia mostrado los de todos los
usuarios, con esto vamos a ver el usuario fox le vamos a cambiar el nombre de las variables que se
llame foxid
#!bin/bash
foxid=$’( cat /etc/passwd | grep fox | awk -F “:” ‘{print $3}’)’
echo $foxid
con esto vamo a grabar nuestro scrip y ejecutarlo y ahí no da el id de nuestro usuario fox, si
nosotros por ejemplo editamos el archivo y le colocamos el usuario root entonces cuando
ejecutemos nuestro scrip pues nos va adar el id 0 que es el id del root
bueno espero que les aya gustado la clase, cara resumir vimos operadores tanto numéricos como de
carácter operadores lógicos operadores de archivo y también vimos operadores aritmeticos, vimos
como se declaran las variables de tipo arreglo vimos tambien como crear una funcion también
vimos como asignar el resultado de un comando a una variable y acerlo también con el filtrado por
medio de awk, la próxima clase vamos haber como utilizar esto de forma practica en ejemplos un
poco mas complejos .
Curso Linux 11/60 | Bash Script Avanzado II
Compartir5
Twittear
Compartir
+1
Compartir 5
Dentro del curso de Linux se explico lo que es Bash Script y se dividió en 4 capítulos, siendo este
el ultimo de esta sección donde tendrás la oportunidad de aplicar el conocimiento adquirido en las
lecciones anteriores de Bash Script. veras las estructuras básicas de:
1. El if.
2. El for.
3. El while.
4. El case.
5. La asignación de comandos a variables.
6. Los arreglos.
7. Y la aplicación de varios arreglos.
En este ejercicio crearas un Bash Script con las siguientes partes:
1. Crearas una función de nombre userContainer que contenga un arreglo con los usuarios del
sistema.
2. Una segunda función de nombre putColors que te permita imprimir el contenido en un
determinado color
3. Un menú con el comando case que te permita mostrar lo siguiente:
1. Usuarios del sistema.
2. Porcentaje del Disco Duro.
3. Tamaño utilizado de tu /home.
4. Cantidad de procesos que están corriendo en actualmente en el sistema.
5. y una opción que te permita salir del Script.
¿Lo vez complicado? tranquilo que te lo explico en el vídeo todo paso a paso.
Anterior mente ya explicamos que todo Shell Script debe tener un encabezado ¿te acuerdas cual es
el encabezado de todo Bash Script? exacto es: #!/bin/bash
Bueno entonces vamos a crear un documento con nano de nombre programa.sh y vamos a comenzar
por elaborar el encabezado de nuestro archivo de Shell Script como siempre colocamos #!/bin/bash
Una vez tengas listo tu script lo guardas y lo ejecutas, no sin antes colocarle los permisos de
ejecución:
chmod +x programa.sh
Ahora con ./ lo ejecutas:
./programa.sh
Si todo ha salido bien veras un menú como el siguiente:
Una vez tengas listo tu script lo guardas y lo ejecutas, no sin antes colocarle los permisos de
ejecución:
chmod +x programa.sh
Ahora con ./ lo ejecutas:
./programa.sh
Si todo ha salido bien veras un menú como el siguiente:
date que nos permite ver y cambiar la hora actual del sistema.
Para averiguar el día de ayer: date -d “yesterday”
Para averiguar el día de hoy: date
Para averiguar el día de mañana: date -d “tomorrow”
Para especificar el formato deseado: date +%d/%h/%y
cal nos muestra el mes actual y nos marca el día de hoy.
Muestra el mes actual: cal
Muestra el mes pasado, presente y siguiente: cal -3
Muestra el calendario de este año: cal -y
Teniendo presentes date y cal pasemos a ver que es cron.
¿Qué es cron?
Su nombre cron proviene del griego chronos que significa “tiempo”. es el equivalente al
administrador de tareas en Windows, es una herramienta de cronograma que ejecuta procesos a
intervalos regulares (cada minuto, día, semana o mes). Los procesos que deben ejecutarse y la hora
en la que deben hacerlo se especifican en el fichero crontab.
Ejemplo practico
En la linea de asteriscos vamos a sustituir el primer asterisco por el 5 y luego le indicamos el
comando Date >> ejemplo1.txt
5 * * * * Date >> ejemplo1.txt
¿que va a hacer esto? se va a ejecutar cada 5 minuto, porque se va a ejecutar en cada minuto, en
cada hora, en cada día del mes, en cada mes, y creará el archivo ejemplo1.txt que registrara la salida
de date de manera acumulativa.46
46 * * * * Date >> ejemplo2.txt
se ejecute en el minuto 46 de todas las horas, de todos los días
50 6 * * * Date >> ejemplo3.txt
Se ejecuta todos los dias a las 6:50
57 6 3 * * Date >> ejemplo4.txt
Se ejecutará cada día 3 a las 6:57
5 7 13 5 * tar zcvf Linux-4.0.1.tar.gz lunix-4.0.1
Se ejecutará cada mes de Mayo el día 13 a las 7:5 y realizara el backup backup de las fuentes del
kernel Linux 4.0.1
15 7 13 5 4 tar zcvf Linux-4.0.1.tar.gz lunix-4.0.1
Se ejecutara solamente los días miércoles de Mayo cuando estos caigan en 13 a las 7:15
Resumen de cron
No olvidemos que:
Save
Comando at
Ahora pasamos a otro servicio que nos permite programar las tareas que es el at. El at funciona de
forma diferente funciona, mas como una cola/spooler que nos permite especificarle tanto la fecha
como la hora de lo que vamos a ejecutar, en el formato hora fecha habitual.
Sintaxis
at 7:20 05/13/2015 formato (MM/DD/YY)
Una vez colocamos at y la fecha nos va a dar un prompt en el cual podemos escribir el comando que
queremos ejecutar,
Resumen
crontab –e para editar el archivo de tabulador de crontab tenemos primero minuto, luego
hora, luego día del mes, luego mes, luego día de la semana y por ultimo el comando y
teniendo en cuenta que el asterisco es el comodín que significa todos las días, todas las
horas, todos los minutos
en el caso de at entonces la sintaxis es diferente , es at la hora el minuto se separa con un
espacio y luego se le indica el mes el día del mes y el año que se quiere que se ejecute la
tarea at 7:50 05/13/2015 con atq se ven los trabajos y con atrm se borran los trabajos y
recuerden dar control para cada vez que se guarda una tarea dentro del at
Bueno y con esto terminamos esta parte de automatización y programación de tareas, En las
próximas entregas del curso vamos a estar viendo la parte de instalación ¿porque? Porque nosotros
hemos asumido que somos usuarios de un sistema con los comando que hemos venido viendo
durante todas estas entregas del curso anteriores, pero entonces ahorita vamos a ser los que
gestionamos nuestro sistema y la primera cosas que debemos saber es como instalar Linux entonces
vamos a ver de ahora en adelante 4 capítulos en los cuales tendremos instalación de Linux Suse, de
Linux centos , de Linux fedora, Linux debian y por ultimo de Linux Ubuntu.
Cómo instalar Linux OpenSUSE 14/60
Compartir12
Twittear
Compartir
+1
Compartir 12
Hoy en nuestro Curso de Linux en Español se comenzará un circulo de lecciones donde podrán
instalar distintos tipos de Sistemas Operativos linux y comenzaremos por OpenSUSE, luego Linux
Centos, Fedora, Debian y por ultimo podrán instalar Linux Ubuntu tanto en su versión escritorio
como en su versión servidor, así que espero que el material desarrollado para ustedes les guste
mucho y lo compartan ;-)
Material a Utilizar
Descarga de Linux OpenSUSE
Instalación de VirtualBox
Si es la primera vez que instalas una distribución de Linux en esta lección te sugerimos que instales
VirtualBox ya que este te proporciona un espacio virtual y separado de tu Sistema Operativo actual,
donde podrás instalar cualquier distribución sin riesgo alguno, así que dale un vistazo al tutorial de
Cómo instalar VirtualBox.
Save
Sin duda disfrutarán mucho con esta nueva experiencia, de poder instalar y probar OpenSUSE no
se olviden inscribirse en el Feed de Proyecto Byte para que reciban un correo con cada nueva
entrega.
Cómo instalar Linux CentOS paso a paso
15/60
Compartir11
Twittear
Compartir
+1
Compartir 11
Hoy vamos a ver Cómo instalar Linux CentOS, En este capitulo 15 del Curso de Linux tendrás de la
ultima versión de Linux CentOS así como la explicación de su instalación tanto en vídeo como en
texto.
Descarga de CentOS
Descarga de Linux CentOS
Instalación de VirtualBox
Instalación de Linux CentOS paso a paso
En la primera imagen vemos el Gestor de inicio de Linux CentOS, este nos proporciona tres
opciones:
1. Instalar Linux CentOS.
2. Verificar la integridad de los medios de instalación e instalar.
3. Y la solución de problemas.
Elegimos una de las dos primeras opciones.
Save
Yo elegí la opción que recomienda Linux CentOS, así que una vez que el sistema inicia lo primero
que hace es una verificación de los medios de instalación, para descartar la posibilidad de que algún
archivo este corrupto.
Save
Una vez iniciado el programa de instalación de Linux CentOS lo primero que nos pide es el idioma
que utilizaremos en la instalación, así que yo elegí Español – el idioma Español con la variante
Español España)
Save
Linux CentOS nos permite seleccionar desde ya el software que utilizaremos en el servidor o
estación de trabajo, en este caso yo elegí como base un escritorio Gnome y como complementos a
Gnome las aplicaciones propias de Gnome y una Suite de Ofimática.
Save
En destino de la instalación elegi el Disco Duro donde se realizará la instalación de Linux CentOS.
Save
En la siguiente pantalla CentOS nos permite activar la red para acceder a Internet.
Save
En este punto el programa de instalación ya comienza a instalar el Sistema Operativo, y mientras
tanto podemos ir creando los dos primeros usuarios que el Sistema tendrá.
Save
Una vez finalizada la instalación clic en Reiniciar.
Save
En esta ultima ventana ya solo toca aceptar la licencia y sus términos de uso, y clic en Finalizar
Configuración.
Save
Una vez que Linux inicia nos muestra la ventana de bienvenida donde aparece el usuario y al darle
click nos solicita la contraseña que previamente le establecimos.
Save
Una vez dentro de la cuenta de usuario nos pregunta que idioma utilizaremos en este usuario.
Save
Una vez más nos permite seleccionar el tipo de teclado que utilizara este usuario.
Save
Nos pregunta si queremos conectar alguna de nuestras cuentas de Google, Outlook o OwnCloud.
Save
Ya todo esta a punto de caramelo.
Save
y nos muestra un tutor donde podremos conocer algunas de las opciones básicas de uso para
movernos mejor en CentOS.
Save
Espero y la información compartida en este capitulo les proporcione una nueva experiencia, al usar
esta magnifica distribución linux, no se olviden de suscribirse si a un no lo han hecha al Feed de
Proyecto Byte para recibir notificaciones por correo de cuando publiquemos información tan buena
como esta y aun mejor.
Cómo Instalar Ubuntu Server
Compartir39
Twittear
Compartir
+1
Compartir 39
Si estás buscando cómo instalar Ubuntu Server de forma correcta has llegado al lugar indicado ya
que aquí en Proyecto Byte te hemos preparado un buen tutorial paso a paso, así podrás configurar tu
servidor de la forma más fácil y sencilla posible.
Ubuntu Server es una buena opción como sistema Operativo para tu servidor, ya que cuenta con
soporte de larga duración, una comunidad bastante grande y activa que ha generado mucha
documentación sobre Ubuntu Server y por otro lado como sistema Operativo es confiable y robusto.
Procesador de 1Ghz
Al menos 2GB de RAM
Espacio en disco de al menos 16GB
Conexión a Internet
Una vez en la siguiente pantalla, como podemos a ver a continuación, debemos seleccionar la
primera opción que dice Instalar Ubuntu Server y presiona Enter.
Save
Ahora vamos con la configuración de la distribución del teclado que el sistema lo puede auto-
detecte, pero será más sencillo creo yo responder que no y presionamos enter.
Save
Ahora se te desplegará una lista para que selecciones la ubicación del servidor, seleccionala la
ubicación y pulsa enter.
Save
Ahora si selecciona la distribución del teclado correspondiente, en este caso Spanish y seguimos.
Save
Como puedes ver entre los teclados en español hay variantes, así que a continuación puedes elegir
el que más se ajusta a tus necesidades o simplemente elige el que dice Spanish ahora pulsa enter y
continuamos.
Save
En este punto, tal como muestra la siguiente pantalla, debes escribir el hostname de tu servidor osea
un nombre que identifique a tu servidor, como por ejemplo Ubuntu-Server o el que tu prefieras, una
vez asignado el nombre elege Continuar y presiona la tecla enter.
Save
Ahora debemos crear una cuenta de usuario para administrar nuestro servidor. Lo primero que
nos pide es el nombre completo de quien va a administrar este servidor Coloca tu nombre por
ejemplo y pulsa enter sobre continuar.
Save
Ahora lo que te pide a continuación es el nombre de usuario con el que iniciará sesión, esta
información es la que siempre usaras al iniciar sección en tu servidor, por ejemplo podrías usar tu
apellido o asignarle el nombre Administrador una vez asignador el nombre de usuario presiona
sobre continuar.
Save
Ahora hay que darle una contraseña a tu usuario no querrás que cualquier persona tenga acceso a tu
Servidor ¿verdad? así que toca asignarle una contraseña, puedes pulsar “Show Pasword in Clear”
que te permite ver lo que escribes. Al terminar pulsa continuar.
Save
Debes confirmar la contraseña osea debes de escribirla una vez más para que el sistema compruebe
que la has escrito correctamente, pulsa continuar.
Save
Si quieres cifrar tu carpeta de usuario este es el momento para decidirlo, pulsa la opción que deseas
y continúa.
Save
En la siguiente sección el sistema detecta automáticamente una zona horaria, en caso de estar
correcta pulsamos sí y seguimos.
Save
Ahora corresponde particionar el disco, aquí elegiremos la segunda opción que es Guiado – Utilizar
el disco completo y configurar LVM
Save
El sistema muestra los discos detectados, elige el que se usará para la instalación.
Save
Vamos a utilizar todo el espacio en el disco, (Ojo este paso borra todo lo que tengas en el Disco
Duro) presiona continuar.
Save
En el caso de que emplees un proxy para salir a internet debes escribirlo en este cuadro de texto y si
no utilizas déjalo en blanco y pulsa continuar.
Save
En este punto escoge la primera opción, sin actualizaciones automáticas, esto es por que tu más
adelante irás actualizado tu sistema, no si antes que realizar tus copias de seguridad y que
posteriormente compruebes que tu servidor funcione adecuadamente después de cada actualización,
pulsa enter.
Save
Llegó el momento de escoger que paquetes vas a instalar, esto depende del uso que le quieras dar a
tu servidor, si aun no lo tienes claro marca la opción Standard system utilities y también te
recomiendo la opción OpenSSH server, esta ultima opción te permitirá conectar al servidor de
forma remota a través de una conexión ssh luego pulsa enter sobre continuar.
Save
El GRUB es el gestor de arranque que utiliza Ubuntu Server para poder iniciarse, sin este tu
servidor seria incapaz de arrancar el Sistema Operativo, así que responde afirmativamente.
Save
En este aspecto ya haz terminado la instalación de Ubuntu Server, así que debes retirar la memoria
USB con la que instalaste el Sistema Operativo en el servidor y pulsa continuar.
Save
Ahora toca ingresar al servidor así que te pedira tu Usuario y contraseña.
Una vez dentro el servidor te indica si tienes paquetes que debes de actualizar, en este campo las
actualizaciones criticas so las de seguridad así que como primera acción actualiza estos paquetes
con
con los comandos: