我正在使用具有最新更新的Ubuntu。我启动了systemd服务,以便在服务器启动时运行脚本(Server.exe)(Mono,C#)。这是它的配置:
[Unit]
Description=My
After=network.target
[Service]
PIDFile=/home/my/server/bshserver.pid
WorkingDirectory=/home/my/server
ExecStart=/home/my/server/start
User=my
Group=my
SyslogIdentifier=My-Server
StandardOutput=syslog
Restart=on-failure
KillSignal=SIGINT
[Install]
WantedBy=multi-user.target
“开始”文件:
#!/bin/sh
echo Starting MyServer in /home/my/server
/home/my/server/Server.exe
exit $?
我本来想尝试另一个Ubuntu,也失败了
当我正常运行脚本/ home / my / server / start(仅在终端上运行/ home / my / server / start)时,它就会按预期运行。 Top报告它使用的CPU是我的2%至5%,这是正常的。 但是,当我通过服务启动来启动它时,htop表示它始终至少使用100%的CPU(一个内核)
是什么可以解释CPU使用率的巨大差异?
答案 0 :(得分:0)
我看到了几个问题:
要启动mono
应用程序,必须使用命令mono
运行它。使用which mono
查找服务器上安装的mono
的完整路径。由于它是您的脚本,因此每次运行时都会报告失败。
您的systemd配置已设置OnRestart=on-failure
,其工作效率超出预期。由于您的脚本将始终失败,systemd
将不断尝试重新启动服务。
更新您的脚本以包括调用mono
:
#!/bin/sh
echo Starting MyServer in /home/my/server
/user/bin/mono /home/my/server/Server.exe
exit $?
如果您的服务使用ServiceBase
,请使用:
#!/bin/sh
echo Starting MyServer in /home/my/server
/user/bin/mono-service /home/my/server/Server.exe
exit $?
Server.exe
将派生。将Type=forking
添加到您的配置中。[Unit] Description=My After=network.target [Service] Type=forking PIDFile=/home/my/server/bshserver.pid WorkingDirectory=/home/my/server ExecStart=/home/my/server/start User=my Group=my SyslogIdentifier=My-Server StandardOutput=syslog Restart=on-failure KillSignal=SIGINT [Install] WantedBy=multi-user.target