.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

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

原文地址:https://www.cnblogs.com/panbao/p/13212474.html