繁体   English   中英

在systemd上发生错误时,应用程序不退出

[英]Application does not exit when an error happening on systemd

因此,我使用.net-core开发了一个应用daemon并使用systemd在linux机器上将该软件作为daemon运行。 现在的问题是,当应用程序中发生错误时,它会输入一个“ limbo”,实际上该应用程序的每个活动都是使用Console.WriteLine记录的,我可以看到此日志在Linux机器上键入该命令: journalctl -fu app.service

发生错误时,日志不会写入任何内容,但是同时应用程序仍在运行,这确实很奇怪,因为我使用以下配置设置了服务:

[Unit]
Description = Daemon service

[Service]
ExecStart = /usr/bin/dotnet /home/my username/Desktop/publish/SimpleApp.dll
WorkingDirectory= /home/foo/Desktop/publish
Restart = always
RestartSec = 3

[Install]
WantedBy = multi-user.target

如您所见, Restart = always出现错误时Restart = always应重新启动应用程序。 引发异常时,方法Error()将错误写入文件中,然后通过以下方式终止软件:

public void Error(Exception ex)
{
   File.WriteAllText("error.txt", ex.ToString());
   Environment.Exit(1); 
}

必须在Linux环境下的Environment.Exit上出现问题,否则我在调用Environment.Exit时发生了错误。 还有其他方法可以关闭像这样作为系统服务运行的应用程序?

谢谢

请尝试以下操作:

public void Error(Exception ex)
{
   File.WriteAllText("error.txt", ex.ToString());
   throw new Exception ("This is a test to see if restart is working");
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM