У меня есть приложение 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 имеет разрешения для поддержки активности. sh
Используется sudo openvt <followed by my script>
Обновлен пакет nuget Avalonia до 0.9.3 (в настоящее время на 0.8.0)
Обновлен файл / etc / sudoers для обеспечения полного доступа к командам root и sudo
Я не уверен, что мне нужно сделать, чтобы заставить это работать, и я не уверен, что это проблема Linux или Avalonia. Оцените любые дальнейшие предложения.