<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>virtualdag.org &#187; bach</title>
	<atom:link href="http://virtualdag.org/tag/bach/feed/" rel="self" type="application/rss+xml" />
	<link>http://virtualdag.org</link>
	<description>dag ftw :`p</description>
	<lastBuildDate>Wed, 28 Jul 2010 10:13:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Programación de Tareas</title>
		<link>http://virtualdag.org/2008/10/18/programacion-de-tareas/</link>
		<comments>http://virtualdag.org/2008/10/18/programacion-de-tareas/#comments</comments>
		<pubDate>Sat, 18 Oct 2008 18:36:58 +0000</pubDate>
		<dc:creator>dag</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[at]]></category>
		<category><![CDATA[autimatizacion]]></category>
		<category><![CDATA[bach]]></category>
		<category><![CDATA[cron]]></category>
		<category><![CDATA[Programador de tareas]]></category>
		<category><![CDATA[tareas]]></category>
		<category><![CDATA[task]]></category>

		<guid isPermaLink="false">http://virtualdag.org/?p=145</guid>
		<description><![CDATA[A veces puede resultar útil poder programar el sistema para que realice tareas a una hora determinada. En esta receta veremos dos maneras de hacerlo. at La utilidad at nos permite ejecutar tareas a una determinada hora. Si no la tenéis en el sistema, basta con instalar el paquete at de la manera estándar. Por [...]]]></description>
			<content:encoded><![CDATA[<p>A veces puede resultar útil poder programar el sistema para que realice tareas a una hora determinada. En esta receta veremos dos maneras de hacerlo.</p>
<h2>at</h2>
<p>La utilidad <tt>at</tt> nos permite ejecutar tareas a una determinada hora. Si no la tenéis en el sistema, basta con instalar el paquete <tt>at</tt> de la manera estándar.</p>
<p>Por ejemplo, vamos a programar que aparezca el eye-of-gnome a las 12:05. Para ello, ejecutamos en un terminal el comando <tt>at</tt>, indicando a continuación la hora a la que debe comenzar la tarea. Como veréis, aparece un prompt en el que indicaremos las tareas que queremos que se ejecuten, una por línea. Para salir del prompt, hay que pulsar Ctrl+D. Aparecerá un mensaje confirmando la hora y el número de la tarea (job).</p>
<p><kbd><br />
$ at 12:05<br />
warning: commands will be executed using /bin/sh<br />
at&gt; eog<br />
at&gt;<br />
job 2 at Fri Oct 17 12:05:00 2008<br />
</kbd></p>
<p>A menudo, lo que queremos es ejecutar varias tareas, pero en un orden secuencial, no todas a la vez (vamos, lo que viene siendo un script). Suponiendo que queramos ejecutar <tt>mistareas.sh</tt>, haremos lo siguiente:</p>
<p><kbd><br />
$ at -f miscript.sh 13:45<br />
warning: commands will be executed using /bin/sh<br />
job 4 at Fri Oct 17 13:45:00 2008<br />
</kbd></p>
<p>También se podría poner miscript.sh como una tarea en el modo interactivo del prompt, siempre y cuando tenga los permisos adecuados de ejecución.</p>
<p>Cabe destacar que con <tt>at</tt>, las tareas quedan programadas para una sola vez, y se borran después de ejecutarse. Es decir, al día siguiente no volverán a ejecutarse.</p>
<p>Si queremos borrar una tarea que tenemos programada, debemos conocer primero su número (el que sale al programarla). Para borrarla, utilizamos <tt>atrm</tt>. Si no conocemos el número de la tarea o lo hemos olvidado, podemos consultar las tareas programadas con la opción <tt>-l</tt>:</p>
<p><kbd><br />
$ at -l<br />
4	Fri Oct 17 13:45:00 2008 a nacho<br />
$ atrm 4<br />
$ at -l<br />
$<br />
</kbd></p>
<h2>cron</h2>
<p>Cron es una herramienta que permite la ejecución de tareas periódicamente en varios intervalos: horario, diario, semanal y mensual. Su utilización es más sencilla que la de <tt>at</tt>: Basta con guardar el script que queramos ejecutar (éste no tiene modo interactivo) en el directorio correspondiente a cuándo queremos que se ejecute.:</p>
<ul>
<li>Cada hora: /etc/cron.hourly/</li>
<li>Cada día: /etc/cron.daily/</li>
<li>Cada semana: /etc/cron.weekly/</li>
<li>Cada mes: /etc/cron.monthly/</li>
</ul>
<p>Esta simplificación de uso es específica de Debian (y derivados quizá). Aunque la funcionalidad es posible conseguirla en otras distribuciones, no es tan sencillo (y puede que los directorios mencionados no existan).</p>
<p>Para saber exactamente cuándo se van a ejecutar las tareas, echamos un vistazo al fichero <tt>/etc/crontab</tt>. Éste es el mío:</p>
<pre># m h dom mon dow user  command
 17 *  *   *   *  root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
 25 6  *   *   *  root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts
--report /etc/cron.daily )
 47 6  *   *   7  root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts
 --report /etc/cron.weekly )
 52 6  1   *   *  root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts
--report /etc/cron.monthly )</pre>
<p>Las columnas indican lo siguiente:</p>
<ul>
<li>m = minute (minuto)</li>
<li>h = hour (hora)</li>
<li>dom = day of month (día del mes)</li>
<li>mon = month (mes)</li>
<li>dow = day of week (día de la semana)</li>
</ul>
<p>Por lo tanto, mi crontab indica que:<br />
- Las tareas &#8220;horarias&#8221; se ejecutarán en el minuto 17 de cada hora.<br />
- Las tareas diarias se ejecutarán a las 6:25<br />
- Las tareas semanales se ejecutarán el séptimo día de la semana, a las 6:47 (0 y 7 indican Domingo, 1 es Lunes, etc&#8230;)<br />
- Las tareas mensuales se ejecutarán el día 1 de cada mes, a las 6:52</p>
<p><a href="http://crysol.org/node/1026" target="_blank">Fuente</a></p>
]]></content:encoded>
			<wfw:commentRss>http://virtualdag.org/2008/10/18/programacion-de-tareas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

