Сценарий, запускаемый crontab, работает не так, как пользователь - PullRequest
0 голосов
/ 09 февраля 2019

У меня есть C # ConsoleApp.exe на Raspberry Pi 3 B + с Raspian.Эта программа выполняет простой процесс, загружает и сравнивает некоторые данные, а затем публикует их на веб-странице дискуссионного форума.Когда я запускаю эту программу в Windows 10, все в порядке и работает без проблем.

В Raspian я запускаю программу с кросс-платформенным эмулятором Mono, а когда запускаю .exe, щелкаю правой кнопкой мыши в контекстном меню и начинаю сMono (Terminal), с командой «mono /home/pi/Desktop/app.exe» в терминале или когда я запускаю script.sh с командами для запуска приложения изнутри, он также работает так же, как в Windows 10.

Проблема: мне нужно запускать эту программу каждый день утром / днем ​​/ вечером.В Windows 10 я использовал Task Scheduler, а в Raspian я использовал Cron.

Команда Cron: 18 7 * * * /home/pi/script.sh

script.sh: #!/bin/bash mono /home/pi/Desktop/app.exe

Я не запускаю команду cron: 18 7 * * * mono /home/pi/Desktop/app.exe, поскольку программа не запускается.

Это забавно, потому что программа действительно запускается каждый день в 7:18, а также записывает текстовый файл на рабочем столе, но она не создает POST на веб-странице.Я использую C # Http.Client в программе.

Знаете ли вы, в чем проблема?Потому что я думаю, что проблема в том, что cron запускает программу в фоновом режиме, и это не то же самое, что я выполняю скрипт самостоятельно или запускаю его в Терминале.

Спасибо за ответы!

Http.Client Code:

  public static async Task writeNewAsync()
            {
                HttpClient client = new HttpClient(new HttpClientHandler { UseCookies = false });

                HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "https://imhd.sk/po/pridaj-prispevok.php");

                request.Content = new StringContent("id=44&typ=0&parent=-1&login=User&heslo=password&text=TEST1", Encoding.UTF8, "application/x-www-form-urlencoded");

                client.DefaultRequestHeaders.Add("Cookie", "cookie_notice=1");
                client.SendAsync(request);
            }
...