Mostrando entradas con la etiqueta bash. Mostrar todas las entradas
Mostrando entradas con la etiqueta bash. Mostrar todas las entradas

jueves, 26 de abril de 2012

Trabajos programados en cola - comando "at"


El comando at lo utilizamos si queremos colococar en una cola un trabajo ó tarea para ser ejecutado en un tiempo especifico. La orden at a diferencia de las tareas del cron se ejecuta solo una vez y desaparece de la cola, mientras que las tareas del cron se ejecutan periodicamente en el horario que se le especifique.

Sintaxis

  • at [-V] [-q queue (cola)] [-f file (archivo)] [-mldv (opciones)] tiempo [fecha]
  • El tiempo puede ser: HH:MM se puede colocar el sufijo AM ó PM, midnight (12:00am), noon (12:00pm), or teatime (4:00pm)
  • La fecha se puede especificar de la siguiente manera: MMDDYY, MM/DD/YY, today, tomorrow. Nota: si se coloca solo la hora y no se especifica fecha, se asume como “today” que seria el dia actual.

Ordenes del at

  • atq: despliega los trabajos en cola.
  • atrm numero_trabajo: elimina un trabajo de la cola.

Archivos Generales

/etc/at.allow → Usuario permitidos
/etc/at.deny → Usuarios denegados


Ejemplo

* Creo un trabajo en la cola “c” a ejecutarse el dia de mañana a las 21:55.
johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2$ at -q c 21:55 tomorrow
warning: commands will be executed using /bin/sh
at> free > /home/johnny/Documents/pruebas/carpeta1/carpeta2/free.txt
at> <EOT>
job 9 at Mon Apr 9 21:55:00 2012

* Muestro el trabajo creado.
johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2$ atq
9 Mon Apr 9 21:55:00 2012 c johnny

* Creo dos nuevos trabajos a ejecutarse el dia de hoy. Si no se especifica un numero de cola toma por defecto la cola “a”
johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2$ at 21:57
warning: commands will be executed using /bin/sh
at> uptime > /home/johnny/Documents/pruebas/carpeta1/carpeta2/uptime.txt
at> <EOT>
job 10 at Sun Apr 8 21:57:00 2012
johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2$ atq
10 Sun Apr 8 21:57:00 2012 a johnny
9 Mon Apr 9 21:55:00 2012 c johnny

johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2$ at 22:00
warning: commands will be executed using /bin/sh
at> date > /home/johnny/Documents/pruebas/carpeta1/carpeta2/date.txt
at> <EOT>
job 12 at Sun Apr 8 22:00:00 2012
johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2$ atq
10 Sun Apr 8 21:57:00 2012 a johnny
9 Mon Apr 9 21:55:00 2012 c johnny
12 Sun Apr 8 22:00:00 2012 a johnny

* Elimino de la cola el trabajo a ejecutarse el dia de Lunes 9 de Abril, trabajo #9.
johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2$ atrm 9
johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2$ atq
10 Sun Apr 8 21:57:00 2012 a johnny
12 Sun Apr 8 22:00:00 2012 a johnny

miércoles, 25 de abril de 2012

Evitar sobreescribir archivos con redirecciones


A continuación explicare brevemente como evitar sobreescribir archivos existente cuando intentamos usar redirecciones en Debian squeeze. Esto puede variar dependiendo de la distribucion.

  • Usar el comando set -o noclobber para evitar que se que sobreescriba un archivo existente.
  • Si queremos quitar la proteccion ultilizamos >|
  • Si queremos que la proteccion se presente de forma permanente debemos incluir el comando set -o noclobber en el shell predeterminado del usuario. Ejemplo: .bashrc, .cshrc, entre otros.
Veamos los siguientes ejemplos:

johnny@debianJG:~/Documents/pruebas$ free > archivo1
johnny@debianJG:~/Documents/pruebas$ cat archivo1
total used free shared buffers cached
Mem: 2853196 1038132 1815064 0 269776 403900
-/+ buffers/cache: 364456 2488740
Swap: 1951736 0 1951736
johnny@debianJG:~/Documents/pruebas$ ls -l archivo1
-rw-r--r-- 1 johnny johnny 230 Apr 5 22:14 archivo1
johnny@debianJG:~/Documents/pruebas$ set -o noclobber
johnny@debianJG:~/Documents/pruebas$ uptime > archivo1
bash: archivo1: cannot overwrite existing file

johnny@debianJG:~/Documents/pruebas$ ls >| archivo1
johnny@debianJG:~/Documents/pruebas$ cat archivo1
!
archivo1
archivo2
archivo3
archivo4
-C
d
este>archivo
mi archivo
ooooo
-V