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

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

  • 相关阅读:
    洛谷 P1443 马的遍历
    括号序列 (自出水题)
    19年清北学堂冬令营游记
    计数排列(模板)
    全排列
    unique去重
    链表 模板+详解
    输入输出优化
    关于广/宽度优先搜索
    第四周 6.7-6.13
  • 原文地址:https://www.cnblogs.com/panbao/p/13212474.html
Copyright © 2020-2023  润新知