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