domingo, noviembre 9

crontab

crontab


Crontab es un archivo de texto que almacena uno o una lista de scripts o comandos a ejecutarse en un tiempo programado por el usuario; crontab se encarga de comparar la fecha y la hora del ordenador con la fecha y hora que se programo para ejecución del script o comandos, cada usuario puede tener su propio archivo crontab; este comando cuenta con 4 editores de texto, para su modificación.


Estructura: 

     crontab  <opcion>

Opciones: 

Para el uso de crontab debemos tener en cuenta las siguientes opciones:

  • - l   Permite visualizar por medio de la consola todos los procesos programados en crontab.
  • - e  Abre un editor de texto el cual nos permitirá crear, agregar o modificar un comando o lista de comandos para programar su ejecución.
  • - r  Permite eliminar que el proceso actual de crontab.

Programación de una tarea:


Para programar una tarea es necesario ejecutar el comando crontab con la opción -e para crear nuestra orden en un editor de texto.




En este caso como es la primera vez que utlizamos esta aplicacíon vamos a utilizar el editor de texto que nos recomienda el /bin/nano, entonces elegimos la opción 2.





A continuación se abre el editor de texto /bin/nano:



Una vez en el editor de texto tenemos que configurar el tiempo de ejecución de los comandos o scripts de la siguiente manera, con referencia a la siguiente estructura.


Estructura dentro del editor de texto: 

<mm> <hh> <dd> <mm> <wd> <comando_o_direccion_de comando>
  • mm   se especifican los minutos del 00 al 59.
  • hh     se delimita la hora desde 00 hasta 23.
  • dd     se establecen el día del mes del 01 al 31.
  • mm   se detalla el mes del 01 (enero)  al 12 (diciembre).
  • wd    se establece el día de la semana del 1 (lunes) al 7 (domingo).
  • comando_o_direccion_de comando   se específica el archivo con el conjunto de ordenes que se desea ejecutar en cierto tiempo ya especificado.

Símbolos auxiliares:


  • -   Se lo utiliza para establecer intervalos ya sen minutos, horas, días del mes o la semana,
  • ,   Se la utiliza para detallar los días, meses o días de la semana específicos.
  • *  Se lo emplea para no especificar dicha opción.


Ejemplo:

31 10 3-4 * 7,5 echo "ejemplo" >> newfile


Entonces estamos diciendo que: los domingos (7) y viernes (5), de cualquier mes (*), los días del 3 al 4, a las 10 de la mañana, con 31 minutos se ejecuta el comando echo cuyo resultado lo direcciona al archivo newfile.


APLICACIÓN


Crear un script que se ejecute todos los días lunes a las 7 de la mañana; el script debe crear una copia de respaldo del directorio /etc que contenga todos sus archivos de configuración, la carpeta de respaldo debe tener por nombre etc.backup.

a. Creamos y probamos el funcionamiento de nuestro script que realice las acciones pedidas.

  1. Utilizamos el editor de texto vim y a nuestro script lo nombramos script2.sh, con el comando: vim script2.sh

  2. Escribimos nuestro código por medio de comandos que realice la orden pedida.



  3. Una ves terminado cerramos y guardamos el vim con nuestro código con :wq, y ejecutamos nuestro archivo para verificar su funcionamiento, como estamos copiando un directorio necesitamos anteponer el comando sudo:  sudo sh script2.sh




  4. El comando se ejecuto correctamente:


  5. Comprobamos la tarea del comando: ls -l


b. Necesitamos que nuestro script se ejecute desde cualquier parte para esto lo copiamos al directorio /bin del directorio raíz, con el comando: sudo cp /home/dario/script2.sh /bin (anteponemos sudo porque estamos trabajando con un directorio root).



c. Como vamos a copiar un directorio del directorio raíz, es necesario anteponer el comando sudo, para lograr la ejecución de nuestro script, pero 
para no tener que loggear la contraseña en la ejecución programada le otorgamos permisos de super-usuario, con el comando sudo chmod u+s script2.sh.
Script con permisos de ejecución. lectura y escritura.


Comando, para el permiso de super-usuario:


Script con el permiso de super-usuario.


d. Ya creado nuestro script, vamos a lograr que su ejecución de forma automática. Ejecutamos el comando crontab -e  para abrir nuestro editor de texto, y especificamos el tiempo en que se ejecute nuestro script.

Abrimos el editor de texto de crontab:




Especificamos el tiempo: 00 7 * *  1 sudo script2.sh . El sript  por nombre script2.sh se ejecutara los días lunes a las 7 de la mañana de cualquier mes, cualquiera que sea el día. Para salir tecleamos Ctrl + X, y luego pulsamos Y para guardar los cambios y damos enter si estamos de acuerdo con el nombre.


e. Listo el día lunes en nuestra carpeta home de usuario tendremos al siguiente carpeta de respaldo:




Referencias:

http://blog.desdelinux.net/cron-crontab-explicados/
http://linux.die.net/man/5/crontab
https://help.ubuntu.com/community/CronHowto
http://www.youtube.com/watch?v=UlVqobmcPuM

domingo, noviembre 2

PATH

Variable PATH

PATH es una variable de entorno, para comprender mejor es donde se van a almacenar las direcciones de los archivos ejecutables de los comandos y ejecutables que queramos añadir; cuando ejecutamos un comando directamente en la consola desde cualquier ruta estamos invocando un archivo ya compilado anteriormente, y se va a buscar a este archivo ejecutable en todas las rutas guardadas en la variable PATH.


Modificación temporal de la variable PATH

Podemos decir modificación temporal de la variable PATH, en realidad nos referimos a agregar una nueva ruta de búsqueda de archivos ejecutables, y además este cambio de nuestra variable permanecerá mientras no apague o reinicie el ordenador.
Para esto previamente debemos crear un archivo ejecutable en este caso es ejectbl y se encuentra en el directorio home de usuario.

Comprobamos la existencia de nuestro archivo ejecutable ejectbl de nuestro programa scripthola.c creados previamente.



Revisamos las rutas de búsqueda del PATH; con el comando: echo $PATH$ como prefijo de la variable podemos imprimir el contenido de la variable.



Notamos que no esta dentro de las rutas, la dirección de nuestro ejecutable ejectbl, es necesario añadir la dirección /home/dario/ejectbl al PATH, esto lo logramos con el comando:
export PATH=$PATH:/home/dario/ejectbl.



Comprobamos que se agrego la ruta: echo $PATH



Listo podemos ejecutar el comando desde cualquier directorio  o ruta que estemos actualmente por ejemplo: desde la raiz /, desde el directorio home /home, o desde la capeta Music /home/dario/music.


En este ejercicio trabajamos con rutas absolutas, así que no importa donde nos encontremos, pero en este caso lo hicimos desde el directorio raíz.


Modificación permanente de la variable PATH

Para modificar de forma permanente es necesario trabajar con ~/.bashrc y modificarlo.

~/.bashrc

~ .-significa la ruta al directorio personal (del usuario); contiene lo mismo que la variable $HOME.

.bashrc .- es un fichero de texto, contiene la configuración de nuestro terminal, que es donde podemos interactuar por medio de texto con nuestra computadora, en una interfaz no gráfica, lee y ejecuta comandos desde ~/.bashrc, podemos en este cualquier orden de la linea de comandos; se encuentra en en el directorio home de usuario como archivo oculto (por eso lleva el punto ante del nombre).
Para poder visualizarlo podemos hacerlo  mediante le comando: ls -a dentro del directorio home de usuario.



Para concluir con la modificación realizamos lo siguiente:

Revisamos las rutas de búsqueda del PATH; con el comando: echo $PATH.



Introducimos el comando para modificar de forma permanente ~/.bashrc:
echo 'export PATH=$PATH:/home/dario/eject' >> /home/dario/.bashrc.



Comprobamos que se agrego la ruta: echo $PATH



Listo podemos ejecutar el comando desde cualquier directorio  o ruta que estemos actualmente por ejemplo: desde la raiz /, desde el directorio home /home, o desde la capeta Music /home/dario/music.



Glosario:
echo .- muestra un mensaje por pantalla.

.   .- el punto antes del nombre de un archivo permite mantenerlo como oculto.

ls -a  .- lista todos los archivos, incluidos los ocultos y los del sistema

Variables de entorno.- variables de entorno son unos valores, etiquetados con un nombre ne amyúsculas. 
  • Usarlos para escribir menos, o tener valores fijos. Si no entiendes esto, probablemente no te sirva. Tampoco es que se utilicen mucho.
  • Variables que consulten otros programas. Esto es importante, y estas variables, para que las vean otros programas, tenemos que exportarlas (lo explico luego).
  • Variables para consultar, que generalmente no se modifican. Por ejemplo, dan información sobre el directorio raíz del usuario.


    Referencias:
      http://blockdeubuntu.blogspot.com/2009/01/cmo-modificar-la-variable-path.html

      http://elpuig.xeill.net/Members/rborrell/articles/los-archivos-bashrc-bash_profile-etc-bashrc-etc-profile-los-archivos-bashrc-bash_profile-etc-bashrc-etc-profile-cual-utilizar

      http://sistemasoperativosepn.blogspot.com/2014/11/path.html?showComment=1414964445368#c4234272832250407468

      http://www.guia-ubuntu.com/?title=Comandos

      jueves, octubre 16

      Raspberry Pi

      Raspberry Pi


      Fue creado por la Fundación Raspberry Pi, con el único objetivo de incentivar el aprendizaje de las ciencias de computación, ya que es un ordenador competo reducido a una placa única, y de bajo costo; es muy pequeño y portátil solo soporta sistemas operativos livianos, para el cual se han desarrollado por Linux ARM sus distintas distribuciones como Debian, Fedora,Arch Linux, RISC OS2 y tiene su propio sistema operativo.





      Existen dos modelos de Rasperry Pi, el modelo A (mas básico), y el modelo B que es mas completo, cuyas diferencias radican más en los sockets de entrada y de salida, el costo y el consumo de energía, por ejemplo el modelo B tiene una ranura de USB adicional y tarjeta de red. Podemos observar en la figura de la derecha que se trata del modelo B, y de su "disco duro" en este caso una memoria SD como medio de almacenamiento permanente; haremos el análisis o descripción de su arquitectura del modelo B porque estructuralmente son muy similares.


      Componentes externos


      Antes del análisis es muy importante observar y reconocer los componentes externos generales de nuestro dispositivo, aunque es un modelo genérico de un ordenador.




      Arquitectura de Raspberry Pi



      Un computador es un sistema secuencial síncrono complejo que procesa la información, que esta representada en forma binaria para lo cual solo utiliza ceros "0" y unos "1",estos son valores lógicos que corresponden con valores de tensión eléctrica, de manera que un ‘1’ lógico (si o verdadero) corresponde a un nivel alto a 5 voltios y un ‘0’ lógico (no o falso) corresponde a un nivel bajo de tensión cercano a 0 voltios; la variación de los voltajes dependen de la capacidad de los componentes del computador.
      La arquitectura de un ordenador en este caso Raspberry Pi, nos ayuda a comprender la ubicación componentes y permite determinar la capacidad de un sistema informático, para emplear su uso. La arquitectura básica de cualquier ordenador completo está formado por 5 componentes básicos: procesador, memoria RAM, disco duro, dispositivos de entrada/salida y software.


      Unidad Central de Procesamiento UPC o CPU


      Este segmento del ordenador se encarga del funcionamiento de los elementos de un computador. Desde que el sistema es alimentado por una corriente, hasta que se corta dicha alimentación,  no para de procesar la información; es la parte más importante del procesador, ya que es utilizado para realizar todas las operaciones y cálculos del computador, posee su propia estructura de este modo:

      Unidad de Control (UC): aquí se lee de la memoria las instrucciones que deben ser ejecutadas y secuenciadas, el acceso a datos y operaciones a realizar por la unidad de proceso; también se generan señales de control que forman un flujo de datos.

      Unidad Aritmética Lógica o ALU (Arithmetic Logic Unit): aquí se realizan las transformaciones  de datos, consta de una serie de módulos que realizan operaciones aritméticas y lógicas.

      Registros Internos: aquí se almacenan los resultados de la ejecución de las instrucciones en la  tarjeta SD que hace las veces de disco duro o memoria de interface.



      La UC se encarga de seleccionar la operación a realizar habilitando los caminos de datos entre los diversos operadores de la ALU y entre los Registro Internos.


      Memoria RAM


      En la memoria se almacena el programa y los datos que va a ejecutar el CPU, cuyas instrucciones son códigos binarios (lenguaje de máquina) que solo son interpretados por la unidad de control; estos datos siempre están de forma binaria almacenados en el ordenador.
      Una memoria RAM, eficiente depende del tiempo de acceso a los datos, mientras este sea menor es mas eficaz; por tanto lo mas lógico es hacer un diseño jerárquico de la distribución memoria.


      La memoria principal se la considera como un vector o una matriz de celdas; esta matriz está organizada por palabras, cada una de las cuales tiene asignada una dirección, a este direccionamiento de celdas se lo representa por el sistema hexadecimal, que indica su posición. Cada palabra está formada por una serie de celdas a las que se accede en paralelo; en cada una se almacena un bit y estos definen las instrucciones.


      Entrada / Salida


      Nuestro computador tiene dispositivos de entrada y salida para poder interactuar con el usuario, ya que estos componentes son externos y de distinta tecnología necesitan su propio entorno de funcionamiento por lo que es necesario, que esta interfaz decodifique el bus de direcciones para poder detectar que el CPU se dirige a él, este proceso se asemeja al de las memorias. 

      El bus de datos se utiliza para el paso de datos entre el periférico y la memoria. Las líneas especiales de control sirven para coordinar y sincronizar la transferencia.


      Sistema de Interconexión: Buses


      Para poder lograr las conexiones de distintos componentes del ordenador como discos duros, tarjetas madres, unidades de CD, teclados, ratones, cámaras, etc. se efectúan a través de los buses. Un bus es conocido como el enlace de comunicación compartido, compuesto de varios cables para conectar subsistemas, estos pueden ser:

      Buses de datos: transmiten datos entre los diferentes elementos del computador.
      Buses de Direcciones: indican la posición del dato que se requiere acceder.
      Bus de Control: seleccionan al emisor y al receptor en una transacción del bus.
      Bus de alimentación: proporcionan a los dispositivos  voltajes distintos.


      En este caso como el ordenador es tan solo una placa yo considere los buses como las ranuras de conexión, los caminos internos de la placa.


      Periféricos


      Son considerados todos los dispositivos que son necesarios para suministrar datos a la computadora o visualizar los resultados, entre los periféricos de entrada tenemos al teclado, ratones, pantallas, digitalizadoras, terminales de video y las tarjetas gráficas; los periféricos se conectan mediante un bus especial a su controlador o al modulo de E/S.



      Glosario:
      síncrono.- en un sistema de comunicación, el transmisor debe coordinarse con el receptor antes del envío de datos. Con frecuencia, la sincronización se maneja haciendo que el hardware transmisor envíe un pulso regular al no haber datos disponibles. El receptor usa los pulsos para determinar el comienzo y fin de los bits. Son procesos síncronos los que dependen de un acontecimiento externo que los dispara.

      Referencias:
      https://www.youtube.com/watch?v=udby3yaR1o8
      http://cpc.farnell.com/jsp/bespoke/bespoke2.jsp?bespokepage=cpc/en_CC/special_offers/bargains/part_detail/RPi_infoLP.jsp
      http://www.frro.utn.edu.ar/repositorio/catedras/electrica/2_anio/fundamentos_informatica/apuntes/arquitectura/Tema1.pdf
      http://www.raspberryshop.es/
      http://es.wikipedia.org/wiki/Raspberry_Pi
      https://www.youtube.com/watch?v=Btr_jJA1S5w
      http://148.204.211.134/polilibros/portal/Polilibros/P_Terminados/PolilibroFC/Unidad_II/Unidad%20II_5.htm

      sábado, octubre 4

      Instalación de Ubuntu sobre VirtualBox

      Virtual box



      VirtualBoxOracle VM VirtualBox es un software de virtualización para arquitecturas x86/amd64, creado originalmente por la empresa alemana innotek GmbH, es desarrollado por Oracle Corporation como parte de su familia de productos de virtualización. Por medio de esta aplicación es posible instalar sistemas operativos adicionales, conocidos como «sistemas invitados», dentro de otro sistema operativo «anfitrión», cada uno con su propio ambiente virtual; VirtualBox se ejecuta en Windows, Linux, Macintosh, y los anfitriones de Solaris y soporta un gran número de sistemas operativos invitados incluyendo pero no limitado a Windows (NT 4.0, 2000, XP, Server 2003, Vista, Windows 7, Windows 8), DOS / Windows 3.x, Linux (2.4, 2.6 y 3.x), Solaris y OpenSolaris, OS / 2.



      Ubuntu



      Ubuntu es un término de origen africano que significa "humanidad hacia otros"; también significa "Yo soy lo que soy por lo que todos somos ', debido a que es un software de licencia libre hay cierta relacion aparente con el nombre, esta basado en Linux el que posee su propio entorno de escritorio denominado Unity;  es una bifurcación del código base del proyecto Debian; está orientado hacia el usuario promedio, con un enfoque en la facilidad de uso y en mejorar la experiencia de usuario. Está compuesto de múltiple software  su primer lanzamiento fue en 2004 el 20 de octubre. El sistema operativo esta integrado varios otros dispositivos, tales como tabletas, televisores, teléfonos y computadores tradicionales.Su patrocinador, Canonical, es una compañía británica propiedad del empresario sudafricano Mark Shuttleworth.




      Tutorial de la instalación de Ubuntu en VirtualBox




      Referencias:
      http://es.wikipedia.org/wiki/Ubuntu#Inicio_de_Ubuntu
      http://www.ubuntu.com
      /http://es.wikipedia.org/wiki/VirtualBox
      https://www.virtualbox.org/

      lunes, septiembre 29

      Introducción

      En este sitio es para encontrar y debatir a cerca del manejo de conceptos, y herramientas de un sistema operativo básico como ubuntu, y con el avance del curso aprender el manejo del software nativo o virtual del computador.

      Estudio en la Escuela Politécnica Nacional, y he creado ese blog, a parte de ser obligatorio, para poder compartir conocimientos e ideas entre colegas del curso.