tareas segundos programador funciona ejecutar cada bat windows cron scheduled-tasks scheduling scheduler

funciona - Programador de tareas de Windows para ejecutar tareas en segundos



ejecutar bat cada 30 segundos (4)

Estoy buscando un programador de tareas de código abierto / libre para Windows 7 (máquina de desarrollo) que me permita programar tareas (solicitudes HTTP a un servicio web) para ejecutar cada x segundos.

He intentado un par de clones de Cron y el programador de tareas de Windows, pero ninguno parece permitir que las tareas se ejecuten en intervalos de menos de 60 segundos. ¿Me estoy perdiendo de algo? No quiero tener que ir y escribir ningún script personalizado si es posible.


Breve explicación: El programa principal inicia un proceso de servicio que permanecerá activo en la memoria y activará periódicamente un trabajo: haga algo.

  1. Cree una clase que amplíe la clase System.ServiceProcess.ServiceBase
  2. Implementar al menos los métodos OnStart y OnStop
  3. Inicie y use el programador Quartz.NET en OnStart para ejecutar tareas periódicamente

Aquí está mi plantilla C # solución para un servicio de Windows y un demonio de Linux en .NET / Mono https://github.com/mchudinov/ServiceDemon Y una breve publicación de blog sobre ello

class Program { public static void Main(string[] args) { ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { new ServiceDemon.Service() }; ServiceBase.Run(ServicesToRun); } } public class Service : ServiceBase { static IScheduler Scheduler { get; set; } protected override void OnStart(string[] args) { StartScheduler(); StartMyJob(); } protected override void OnStop() { Scheduler.Shutdown(); } void StartScheduler() { ISchedulerFactory schedFact = new StdSchedulerFactory(); Scheduler = schedFact.GetScheduler(); Scheduler.Start(); } void StartMyJob() { var seconds = Int16.Parse(ConfigurationManager.AppSettings["MyJobSeconds"]); IJobDetail job = JobBuilder.Create<Jobs.MyJob>() .WithIdentity("MyJob", "group1") .UsingJobData("Param1", "Hello MyJob!") .Build(); ITrigger trigger = TriggerBuilder.Create() .WithIdentity("MyJobTrigger", "group1") .StartNow() .WithSimpleSchedule(x => x.WithIntervalInSeconds(seconds).RepeatForever()) .Build(); Scheduler.ScheduleJob(job, trigger); } } public class MyJob : IJob { public void Execute(IJobExecutionContext context) { JobDataMap dataMap = context.JobDetail.JobDataMap; log.Info(dataMap["Param1"]); } }


Es posible crear múltiples disparadores para una tarea programada. Si crea 59 activadores idénticos con un desplazamiento de 1 segundo entre sí, y programa la tarea para que se ejecute cada minuto, terminará la tarea programada para ejecutarse cada segundo.

Puede crear esos 59 activadores manualmente usando la GUI. Sin embargo, una forma mucho más rápida de crear tantos disparadores es crear una tarea con uno o dos desencadenantes, exportarla a un archivo de texto, duplicar las líneas correspondientes, cambiar las compensaciones de inicio en consecuencia y luego volver a importar el archivo.


Lo busqué en Google hasta la muerte, así que, por lo que puedo ver, la respuesta es que no hay ninguno. Hay muchas soluciones comerciales, pero no programas de código abierto / gratuitos.

Terminé escribiendo un programador HTTP GET muy simple en java usando el programador de cuarzo . Puede ser útil para otros y publicar un enlace a la fuente en guthub https://github.com/bjordan/simple_java_periodic_HTTP_scheduler


De hecho, pude lograr esto.

Actualización: parece que lo he complicado.

En el desencadenador, donde dice "Repita la tarea cada:" , puede TIPO en el menú desplegable "1 minuto" (no le permitirá escribir el tiempo en segundos)

Hice esto en una máquina con Windows 7.

Además, claramente no leí la pregunta lo suficientemente bien, ya que el asker parece haber podido reducir el tiempo a 1 minuto. Sin embargo, dejaré esta respuesta aquí, ya que explicará a los futuros lectores exactamente cómo reducir el tiempo a un minuto.

Parece que no puedes hacer que funcione en un intervalo de menos de un minuto.

Configuré una tarea con un disparador establecido en Diario para que se repita cada 1 día. Verifico el recuadro "Repetir tarea cada:". Ajustándolo a 5 minutos por una duración de 1 día

Esto hace que la tarea vaya para siempre, cada 5 minutos.

Luego exporté la tarea. Exporta a un archivo .xml.

En Task > Triggers > CalendarTrigger > Repeition existe la siguiente etiqueta: <Interval>PT5M</Interval> Lo cambié de PT5M a PT1M . Reimporté la tarea.

La tarea ahora se ejecuta cada 1 minuto.

No lo he probado completamente, y no lo he intentado con menos de un minuto, pero podría ser posible al poner PT30S o algo por 30 segundos. Lo probaré e informaré. Actualización: no puedes hacer esto, obtienes un error al importar la tarea. No es posible establecer este tiempo en menos de 1 minuto.

Todo el disparador se ve así:

<Triggers> <CalendarTrigger> <Repetition> <Interval>PT1M</Interval> <Duration>P1D</Duration> <StopAtDurationEnd>false</StopAtDurationEnd> </Repetition> <StartBoundary>2013-11-07T17:04:51.6062297</StartBoundary> <Enabled>true</Enabled> <ScheduleByDay> <DaysInterval>1</DaysInterval> </ScheduleByDay> </CalendarTrigger> </Triggers>