• Publicidad

Editar cron con Config::Crontab

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Editar cron con Config::Crontab

Notapor danimera » 2011-09-26 15:14 @676

¿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.

Sintáxis: [ Descargar ] [ Ocultar ]
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.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


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
Avatar de Usuario
danimera
Perlero frecuente
Perlero frecuente
 
Mensajes: 871
Registrado: 2005-06-23 19:02 @834
Ubicación: Colombia

Publicidad

Re: Editar cron con Config::Crontab

Notapor explorer » 2011-09-26 15:43 @696

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 & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Editar cron con Config::Crontab

Notapor danimera » 2011-09-26 16:04 @711

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
Avatar de Usuario
danimera
Perlero frecuente
Perlero frecuente
 
Mensajes: 871
Registrado: 2005-06-23 19:02 @834
Ubicación: Colombia

Re: Editar cron con Config::Crontab

Notapor explorer » 2011-09-26 16:48 @742

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.

Sintáxis: [ Descargar ] [ Ocultar ]
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
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

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 & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 9 invitados