zoukankan      html  css  js  c++  java
  • .net core 使用Quartz 创建及部署 Linux 定时服务

    Quartz.NET是一个开源的作业调度框架,非常适合在日常工作中做一些定时任务。

    在Windows系统中,我们可以直接新建一个Windows Service项目,进行相应的编码生成一个exe程序并部署为 Windows服务,启动服务,即可定时执行任务。

    在Linux系统中,由于Windows 服务只能运行在Windows系统上,所以想达到上面的目标,创建一个控制台应用程序是更好的选择。

    开发环境

    Windows 10 ,visual studio 2019,版本16.6.1,.net core 3.1

    运行环境

    CentOS Linux release 7.5.1804 (Core) 

     1         static void Main(string[] args)
     2         {
     3             IScheduler scheduler;
     4             ISchedulerFactory factory = new StdSchedulerFactory();
     5             scheduler = factory.GetScheduler().Result;
     6             IJobDetail testJobDetail = JobBuilder.Create<TestJob>().WithIdentity("testJob").Build();
     7             ITrigger testJobTrigger = TriggerBuilder.Create().WithCronSchedule("0/2 * * * * ? *").Build();
     8             scheduler.ScheduleJob(testJobDetail, testJobTrigger);
     9             scheduler.Start();
    10             while (true)
    11             {
    12                 Thread.Sleep(50);
    13             }
    14         }
    Program.cs
     1     public class TestJob:IJob
     2     {
     3         public Task Execute(IJobExecutionContext context)
     4         {
     5             return Task.Run(() =>
     6             {
     7                 var content = $"{DateTime.Now:yyyy-MM-dd HH:mm:ss}";
     8 
     9                 string path = "/test.log";
    10                 using (StreamWriter sw=new StreamWriter(path,true))
    11                 {
    12                     sw.WriteLine(content);
    13                 }
    14             });
    15         }
    16     }
    TestJob.cs

    发布配置

    发布配置

    之后上将生成的文件上传到Linux服务器

    执行以下代码

    vi /lib/systemd/system/your-service-name.service
    
    #insert the following
    
    #your service description
    [Unit]
    Description=Test Service
    
    #your console app path
    [Service]
    ExecStart=/wwwroot/test/demo.Jobs
    
    [Install]
    WantedBy=default.target

    保存之后执行以下代码

    systemctl daemon-reload
    
    systemctl start your-service-name.service
    
    systemctl status your-service-name.service

     上图表示服务正常运行

    运行命令

    cat /test.log

    即可看到示例中正常记录的时间

  • 相关阅读:
    [转载]重构代码的7个阶段
    查看JDK源码
    敏捷结果30天之第七天:设定边界值和缓冲
    敏捷结果30天之第十一天:高效能、慢生活
    他们到底需要神马???——戏说“用户需求”
    敏捷结果30天之第一天:总体认识敏捷结果方法
    敏捷结果30天之第五天:使用热图标识出重要事情
    重构代码学习笔记一:重构的原则
    开发可统计单词个数的Android驱动程序(2)
    使用Android NDK和Java测试Linux驱动
  • 原文地址:https://www.cnblogs.com/panbao/p/13212474.html
Copyright © 2011-2022 走看看