Ошибка: "SystemException:XOpenDisplay failed" при попытке запустить приложение Avalonia из Crontab в Linux

У меня есть приложение Avalonia на плате Linux Debian UP, которое я могу запустить с помощью следующей команды из терминала:

sudo dotnet /home/user/myapp/myapp.dll

Я написал следующий скрипт keepalive.sh, чтобы проверить, запущено ли приложение, и запустить его, если это не так:

#!/bin/bash
if ! ps aux | pgrep -fx -l "dotnet /home/user/myapp/myapp.dll" > /dev/null
then
   sudo dotnet /home/user/myapp/myapp.dll
fi

Когда я запускаю это с терминала, он открывает приложение в порядке.

Затем я отредактировал файл crontab, добавив следующую строку:

*/1 * * * * sudo bash /home/user/keepalive.sh >> /tmp/keepalive.log 2>&1

Вывод в файле журнала:

Unhandled Exception: System.Exception: XOpenDisplay failed
   at Avalonia.X11.AvaloniaX11Platform.Initialize(X11PlatformOptions options)
   at Avalonia.Controls.AppBuilderBase`1.Setup()
   at Avalonia.Controls.AppBuilderBase`1.Start[TMainWindow](Func`1 dataContextProvider)
   at MyApp.Program.Main(String[] args) in C:\src\VSO\MyApp\src\MyApp\Program.cs:line 24
/home/user/keepalive.sh: line 4: 19313 Aborted                 sudo dotnet /home/user/myapp.dll

Я попытался явно настроить отображение в crontab и keepalive.sh, добавив следующее:

XAUTHORITY=/home/user/.Xauthority -or-
XAUTHORITY=${HOME}/.Xauthority -or-
XAUTHORITY=~/.Xauthority

Я также могу открыть Firefox из crontab, так что уверен, что это не проблема X-сессии или DISPLAY.

Другие вещи, которые я пробовал, включают:

  • Установка PATH переменная в crontab

  • Использование абсолютных путей для всего

  • Убедитесь, что у root есть разрешения на keepalive.sh

  • Используемый sudo openvt <followed by my script>

  • Обновлен пакет NuGet Avalonia до 0.9.3 (сейчас 0.8.0)

  • Обновлен файл /etc/sudoers, чтобы разрешить полный доступ для команд root и sudo.

Я не уверен, что мне нужно сделать, чтобы это работало, и я не уверен, что это проблема Linux или Avalonia. Благодарим за любые дальнейшие предложения.

0 ответов

Другие вопросы по тегам