我是一名有用的助手,可以为您翻译文本。
我有一个持续运行的 .Net Core (2.1) 控制台应用程序,使用 Quartz.Net 调度了许多重复的后台任务。我试图在 Linux 服务器上(16.04)运行该应用程序。当作为独立应用程序运行时,该应用程序运行良好。但是,当我尝试将该应用程序作为 systemd 服务运行时,它会挂起。该应用程序加载并调度了 Quartz.Net 中的各种任务,但预定的后台任务从未执行。服务与独立应用程序的执行有何不同?
systemd 服务配置文件如下:
任何建议都将不胜感激。
我有一个持续运行的 .Net Core (2.1) 控制台应用程序,使用 Quartz.Net 调度了许多重复的后台任务。我试图在 Linux 服务器上(16.04)运行该应用程序。当作为独立应用程序运行时,该应用程序运行良好。但是,当我尝试将该应用程序作为 systemd 服务运行时,它会挂起。该应用程序加载并调度了 Quartz.Net 中的各种任务,但预定的后台任务从未执行。服务与独立应用程序的执行有何不同?
systemd 服务配置文件如下:
[Unit]
Description=FiddleMon.Background
[Service]
User=ubuntu
Restart=on-failure
ExecStart=/home/ubuntu/scripts/start-fiddlemon.background.sh
[Install]
WantedBy=multi-user.target
我不知道这是否与情况有关,但我注意到应用程序在独立运行或作为服务运行(SLl vs SLl+)时,在 ps aux
列表中的 STAT 栏目有所不同:
standalone => 1782 1.4 8.4 2923228 171996 pts/1 SLl+ 00:18 0:33 /usr/bin/dotnet FiddleMon.Background.dll
service => 1518 8.9 4.7 2767936 97132 ? SLl 23:59 0:03 /usr/bin/dotnet FiddleMon.Background.dll
任何建议都将不胜感激。
ps
中的+
表示这是一个前台进程组,基本上就是如果你按下Ctrl-C
,接收信号的进程。看起来不相关。你能启用调试模式(将set -x
添加到 .sh 文件中)并发布journalctl -u $SERVICE_NAME
的输出吗? - omajidExecStart=/bin/dotnet/dotnet Service.dll
。 - Jobse