Как запустить Cron Job из приложения Dot Net Core API / C #? - PullRequest
0 голосов
/ 07 ноября 2018

У меня следующий вариант использования.

У нас уже есть задание cron, развернутое на сервере Linux, которое работает непрерывно.

Теперь нам нужно запустить это задание по требованию / событие нажатия кнопки / через API.

Например, у нас есть экран для получения запроса на экспорт данных от пользователя, и как только пользователь разместил этот запрос, нам нужно запустить задание cron, которое будет экспортировать файл и отправить его пользователю по электронной почте. Экспорт файла - длительный процесс, поэтому мы создали задание.

У меня есть одно решение - использовать QuartzNet, но я не хочу изменять или изменять реализацию задания. Есть ли способ запустить эту задачу cron из кода C #?

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 07 ноября 2018

Задание 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();, читать стандартный вывод и т. Д.

...