Как отладить 203 / EXEC при запуске dotnet appname.dll в redhat 7 systemd? - PullRequest
0 голосов
/ 28 апреля 2019

Уже 4 дня пытаюсь отлаживать. У меня есть веб-приложение asp.net core 2, которое я пытаюсь запустить в Redhat Linux 7.1 systemd. DLL работает нормально, когда я запускаю его вручную, но не удается при попытке запустить через systemd.

Вывод из systemctl

web.service - WebServiceLayer Загружен: загружен (/etc/systemd/user/web.service; включен; предустановка поставщика:> отключена)

Активен: активирован (автоматический перезапуск) (Результат: код выхода) с Sun 2019-04-28> 12:49:01 CDT; 2 с. Назад

Процесс: 13588 ExecStart = / microsoft / dotnetcore / dotnet /local/lfs1/ServiceLayer/WebServiceLayer/WebServiceLayer.dll (код = выход, статус = 203 / EXEC)

Основной PID: 13588 (код = выход, статус = 203 / EXEC)

28 апреля 12:49:01 mymachine.net systemd [1]: web.service: основной процесс завершен, код = завершен, статус = 203 / EXEC

28 апреля, 12:49:01 mymachine.net systemd [1]: объект web.service перешел в сбойное состояние.

28 апреля 12:49:01 mymachine.net systemd [1]: сбой web.service.

Вот основной сервисный файл

mymachine home/username $ cat /etc/systemd/user/web.service
[Unit]
Description=WebServiceLayer
After=syslog.target

[Service]

User=serviceUser

Group=serviceUser
PIDFile=/tmp/$i.pid
WorkingDirectory=%h
Environment="PATH=/microsoft/dotnetcore/"
ExecStart="/microsoft/dotnetcore/dotnet /local/lfs1/ServiceLayer/WebServiceLayer/WebServiceLayer.dll"
Restart=always
RestartSec=3
StartLimitBurst=10
StartLimitIntervalSec=0
KillSignal=SIGQUIT
StandardError=syslog
NotifyAccess=all

[Install]
WantedBy=multi-user.target

Для справки, при нормальном запуске dll я не получаю ошибок:

[serviceUser @ mymachine]: / microsoft / dotnetcore / dotnet /local/lfs1/ServiceLayer/WebServiceLayer/WebServiceLayer.dll Хостинг среда: Производство Корневой путь к содержимому: / home / serviceUser Теперь прослушивает: "http://0.0.0.0:7777" Приложение запущено. Нажмите Ctrl + C, чтобы завершить работу.

Я смотрел на Исправление сбоя службы systemd 203 / EXEC (такого файла или каталога нет) , но это не помогло моей проблеме. Любая помощь будет принята с благодарностью.

Код из Program.cs в файле .dll:

public static void Main(string[] args)
        {
            // NLog: setup the logger first to catch all errors
            var logger = NLog.Web.NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger();
            try
            {
                logger.Debug("init main");
                CreateWebHostBuilder(args).Build().Run();
            }
            catch (Exception ex)
            {
                //NLog: catch setup errors
                logger.Error(ex, "Stopped program because of exception");
                throw;
            }
            finally
            {
                // Ensure to flush and stop internal timers/threads before application-exit (Avoid segmentation fault on Linux)
                NLog.LogManager.Shutdown();
            }
        }

        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseUrls(urls: "http://mymachine.net:7777") 
                .UseStartup<Startup>()
                .ConfigureLogging(logging =>
                {
                    logging.ClearProviders();
                    logging.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace);
                })
                .UseNLog();  // NLog: setup NLog for Dependency injection
    }

1 Ответ

0 голосов
/ 28 апреля 2019

Ну, из полученного результата трудно понять, что происходит.Я бы посоветовал вам настроить дополнительное ведение журнала.

Сначала вы можете настроить ведение журнала в текстовом файле, чтобы получить более подробную информацию.Немного больше информации: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/logging/?view=aspnetcore-2.2

После этого вы можете сделать большую попытку / поймать код в методе main и зарегистрировать исключение.

Единственная быстрая проверка, которая приходит мне в голову, имеет ли serviceUser достаточно прав для доступа к файлам dll или config или другим связанным с ними вещам?

...