c# - 如何从 Dot Net Core API/C# 应用程序触发 cron 作业?
问题描述
我有以下用例。
我们已经在一个持续运行的 Linux 服务器上部署了一个 cron 作业。
现在我们需要通过 API 按需触发这个工作/一些按钮点击事件/。
例如,我们有一个屏幕来获取用户的导出数据请求,一旦用户提出了这个请求,我们需要触发将导出文件并通过电子邮件发送给用户的 cron 作业。导出文件是一个长期运行的过程,这就是我们创建作业的原因。
我有一种解决方案是使用 QuartzNet,但我不想修改或更改作业实现。有什么方法可以从 C# 代码触发这个 cron 作业?
任何帮助将不胜感激。
解决方案
cron 作业只是一个 bash 命令。您可以简单地使用与crontab中相同的命令,并使用以下内容调用它:
public static void StartCommand(string cmd)
{
var escaped = cmd.Replace("\"", "\\\"");
var process = new Process()
{
StartInfo = new ProcessStartInfo
{
FileName = "/bin/bash", // or whatever shell you use
Arguments = $"-c \"{escaped}\"",
UseShellExecute = false,
CreateNoWindow = true,
}
};
process.Start();
}
示例调用:
SomeClass.StartCommand("exportprocess \"argument\" --example-flag");
当然,根据您的需要,您可以使用process.WaitForExit();
、读取标准输出等。
推荐阅读
- arrays - 数组未加载 v-for
- java - java ListView即使在清除后也显示内容
- html - 如何在 Bootstrap 4 中设置自定义列宽
- reactjs - 通过 Wix 使用 React Native Navigation 注册 React Native 代码推送
- jmeter - Blazemeter:属性未在线程组之间交换
- c++ - 地图给出了一些模棱两可的价值
- java - 将 hashmap 转换为字符串
- amazon-web-services - 如何将 AWS Route53 子域指向 AWS Lightsail 实例?
- java - 在java中从文件中加载数据
- sql - 查询返回 10 个具有复杂条件的值