Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 
Índice general » Mundo Perl » Intermedio » Editar cron con Config::Crontab Responder al tema
Nuevo tema


Página 1 de 1  [ 4 mensajes ] 
 
Nota 2011-09-26 15:14 @676
Avatar de Usuario
Vive para Perl en Español
Registrado: 2005-06-23 19:02 @834
Ubicación: Colombia
Mensajes: 551
Editar cron con Config::Crontab
¿Cómo puedo editar el cron? Actualmente tengo este código similar y me crea el nuevo cron sin problemas, pero cuando voy a agregar otro cron, me edita el que ya tenía.

Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
  1. $block = new Config::Crontab::Block;
  2. my $ct = new Config::Crontab;
  3.  
  4.   $block->last( new Config::Crontab::Comment( -data => '## Envio' ) );
  5.   $block->last( new Config::Crontab::Env( -name => 'ENVIO', -value => 'sitedata' ) );
  6.   $block->last( new Config::Crontab::Event( -minute  => 40,
  7.                                             -hour    => 3,
  8.                                             -command => "wget 'url.com'" ) );
  9. $ct->last($block);
  10.   $ct->write;
  11.  


No entiendo las líneas de comment y Env.

Bueno, traté de ponerle un file, pero no sé cómo usar eso, o cómo debería ser. La documentación del CPAN es clara, pero no entiendo bien cómo funcionan los cron jobs, ese es mi problema.

_________________
100% Telch - Perl Web Programming
Cali PerlMongers: http://cali.pm.org


Nota 2011-09-26 15:43 @696
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10250
Re: Editar cron con Config::Crontab
Las líneas Comment sirven para definir los comentarios, y el Env, para definir las variables del entorno, en el que se ejecutarán los comandos, en el periodo indicado.

Deberías poner un ejemplo completo de lo que quieres hacer, porque solo has puesto unas líneas de ejemplo.

Para entender cómo funcionan los trabajos bajo el demonio cron, tienes una explicación muy buena en la Wikipedia (cron [Unix]) en la página de manual de crontab, en tu ordenador.

¿Has hecho un read() para que se vayan agregando los bloques, unos tras otros?

_________________
JF^D Perl programming


Nota 2011-09-26 16:04 @711
Avatar de Usuario
Vive para Perl en Español
Registrado: 2005-06-23 19:02 @834
Ubicación: Colombia
Mensajes: 551
Re: Editar cron con Config::Crontab
Pues eso es todo lo que hago, lo único que varia es el nombre del cron, y la fecha en que se ejecuta, ese es mi trozo de código no hay nada más oculto.

Y quiero lograr cómo leer un cron anterior y editarlo, y cómo crear uno nuevo, aún no sé cómo hacerlo.

_________________
100% Telch - Perl Web Programming
Cali PerlMongers: http://cali.pm.org


Nota 2011-09-26 16:48 @742
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10250
Re: Editar cron con Config::Crontab
Es que te falta, justamente, un read(). El módulo debe saber a qué fichero crontab te estás refiriendo: si al del usuario (con crontab -l), o un fichero aparte. Si no indicas ninguno, entonces está creando un fichero nuevo cada vez.

Por ejemplo, con el siguiente ejemplo, se puede cambiar un fichero crontab. Y cada vez que lo ejecutas, se agrega un bloque más. Eso es porque primero se lee el fichero actual.

Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use Config::Crontab;
  3.  
  4. my $ct = new Config::Crontab;
  5.  
  6. $ct->read(-file => 'cron.txt'); # Leemos el crontab actual
  7.  
  8. $ct->write('cron.bak');     # Grabamos una copia del estado actual
  9.  
  10.  
  11. my $block = Config::Crontab::Block->new;
  12.  
  13. $block->last( new Config::Crontab::Comment( -data => '## Envio' ) );
  14. $block->last( new Config::Crontab::Env    ( -name => 'ENVIO', -value => 'sitedata' ) );
  15. $block->last( new Config::Crontab::Event  ( -minute  => 40,
  16.                                             -hour    => 3,
  17.                                             -command => "wget 'url.com'",
  18.                                           )
  19. );
  20.  
  21. $ct->last($block);          # Añadimos el bloque
  22.  
  23.  
  24. $ct->write('cron.txt');     # Sacamos una copia del estado final

Si, en lugar de querer modificar un fichero, queremos que se modifique el crontab del usuario, solo tienes que modificar el read() y el write(), quitándoles los argumentos.

_________________
JF^D Perl programming


Responder al tema  [ 4 mensajes ] 

Reglas del Foro
No puedes abrir nuevos temas en este Foro
No puedes responder a temas en este Foro
No puedes editar tus mensajes en este Foro
No puedes borrar tus mensajes en este Foro
No puedes enviar adjuntos en este Foro

Publicidad

Socializa

Síguenos por Twitter

Suscríbete GRATUITAMENTE al Boletín de Perl en Español

Saltar a:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traducción al español por Huan Manwë para phpbb-es.com
phpBB SEO