【发布时间】:2018-12-11 07:43:30
【问题描述】:
我有一个持续运行的 .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
我不知道这是否与这种情况有关,但我确实注意到应用程序的 ps aux 列表中的 STAT 列有所不同,具体取决于它是独立运行还是作为服务运行(SLl与 SLl+):
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
任何建议将不胜感激。
【问题讨论】:
-
如果从文件来看,工作目录或权限会有所不同,您如何安排作业?
-
可以分享一下start-fiddlemon.background.sh的内容吗?
-
ps中的+表示这是一个foreground process group,基本上就是当你点击Ctrl-C时获取信号的过程。似乎不相关。能否启用调试(将set -x添加到.sh 文件)并发布journalctl -u $SERVICE_NAME的输出? -
@MarkoLahma 感谢您的评论,请参阅下面的答案。
-
@omajid 感谢您的评论,请参阅下面的答案。
标签: linux .net-core quartz.net systemd